SpringBoot扩展接口-加载环境配置属性源
2023-09-11 14:19:52 时间
SpringBoot启动过程中
会在PrepareEnviroment()方法中进行上下文环境的准备
即,进行 StandardServletEnvironment 的初始化配置,内部有一个配置属性列表:List<PropertySource<?>> propertySourceList
默认会添加系统环境参数,系统JVM参数,还有命令行参数等属性源。
提供了扩展环境属性源的接口:
在ApplicationEnvironmentPreparedEvent环境准备完成事件中
调用EnvironmentPostProcessor接口
SpringBoot的配置文件加载就是通过这个接口实现类 ConfigFileApplicationListener 完成配置文件的加载
默认配置文件加载顺序:
--spring.config.location指定加载配置文件, 当这个参数没指定时,才会按照下面顺序默认加载配置文件
file:./config/ file:./, classpath:/config/, classpath:/,
还有一个配置文件加载方式是:
当进行bean定义解析时,如果有@PropertySource注解标记,则会新增一个配置属性源到Environment环境属性源中。
如果想要自定义规则加载配置文件属性
方法1:
实现EnvironmentPostProcessor接口
然后在META-INF/spring.factories添加相应配置
参考资料:
SpringBoot扩展点之EnvironmentPostProcessor
方法2、
自定义@PropertySource配置bean,加载指定配置文件到Environment环境属性源中。
这个方式指定的配置源,优先级是最低的
方法3、
PropertySourceLoader 接口 (不推荐)
自定义配置文件加载器,自己解析配置文件属性,
比如解析.json后缀的配置文件属性到系统中
参考链接:https://blog.csdn.net/catoop/article/details/71157986
配置在META-INF/spring.factories文件中配置方式
# PropertySource Loaders
org.springframework.boot.env.PropertySourceLoader=\
org.springframework.boot.env.PropertiesPropertySourceLoader,\
org.springframework.boot.env.YamlPropertySourceLoader
配置属性源优先级从高到低
链接:https://blog.csdn.net/z_ssyy/article/details/105347680 ===================SpringBoot也可以从以下位置加载配置; 优先级从高到低;高优先级的配置覆盖低优先级的配置,所有的配置会形成互补配置====================== 1.命令行参数 所有的配置都可以在命令行上进行指定 java -jar spring-boot-02-config-02-0.0.1-SNAPSHOT.jar --server.port=8087 --server.context-path=/abc 多个配置用空格分开; --配置项=值 2.来自java:comp/env的JNDI属性 3.Java系统属性(System.getProperties()) 4.操作系统环境变量 5.RandomValuePropertySource配置的random.*属性值 ==由jar包外向jar包内进行寻找;==(*.properties>*.yml) ==优先加载带profile== 6.jar包外部的application-{profile}.properties或application.yml(带spring.profile)配置文件 7.jar包内部的application-{profile}.properties或application.yml(带spring.profile)配置文件 8.--spring.config.location=C:/application.properties(它在这里) ==再来加载不带profile== 9.jar包外部的application.properties或application.yml(不带spring.profile)配置文件 10.jar包内部的application.properties或application.yml(不带spring.profile)配置文件 11.@Configuration注解类上的@PropertySource 12.通过SpringApplication.setDefaultProperties指定的默认属性
相关文章
- JavaWeb-SpringBoot_使用MySQL管理用户登录注册+接入腾讯短信SDK_demo
- SpringBoot配置属性之Server
- Springboot集成MapperFactory(ma.glasnost.orika.MapperFactory)类属性复制
- SpringBoot 跨域 Access-Control-Allow-Origin
- SpringBoot Actuator RCE 漏洞总结
- SpringBoot开发案例之mail中文附件名字乱码
- SpringBoot应用和PostgreSQL数据库部署到Kubernetes上的一个例子
- Atitit spring 定时器 CRON表达式 含义 目录 1.1. 大概流程1 1.2. 核心源码springboot1 1.3. Cron表达式属性——String2 1.4
- SpringBoot配置属性之其他
- SpringBoot配置属性之DataSource
- SpringBoot配置属性之Server
- 15_SpringBoot Admin组件
- 【项目实战】Springboot整合SCP,实现远程文件拷贝与传输功能
- 熟练掌握YAML配置文件,让你在SpringBoot开发中事半功倍
- 【springboot系列】这样优化Spring Boot,启动速度快到飞起!
- 在springboot中,如何读取配置文件中的属性
- SpringBoot 整合mybatis-plus 高级功能及用法详解
- springboot前后端分离后权限原理浅谈
- SpringBoot升级到2.0后默认时间格式变化_springboot接收date类型参数
- springboot项目集成mybatisplus两部曲
- SpringBoot 国际化实现跨地区的多语言切换
- SpringBoot整合Kafka消息组件
- 实现springboot项目实现热部署(eclipse)
- Springboot怎么实现WebSocket通信(一)
- springboot使用redis(StringRedisTemplate的常用方法)