-
Externalized Configuration
SpringBoot应用可以从properties文件、yaml文件、环境变量、命令行参数中得到配置参数。代码里可以使用注解
@Value
读取配置项的值。配置项参数的加载顺序,后加载的属性,可以覆盖已加载的同名属性的值。
- 默认配置,通过
SpringApplication.setDefaultProperties
指定参数值。 - 使用
@PropertySource
指定参数值的来源。 - 配置文件,比如
application.properties
或者application.yaml
。 - 操作系统的环境变量。
- Java的系统变量,即
System.getProperties()
。 - JNDI方式指定的属性。
- 为
ServletContext
对象配置的参数。 - 为
ServletConfig
对象配置的参数。 - 使用
SPRING_APPLICATION_JSON
指定的JSON格式的属性,对应的命令行变量名为spring.application.json
。
使用环境变量,样例如下:SPRING_APPLICATION_JSON='{"my":{"name":"test"}}' java -jar myapp.jar
使用JVM的系统变量,样例如下:
java -Dspring.application.json='{"my":{"name":"test"}}' -jar myapp.jar
使用命令行参数,样例如下:
java -jar myapp.jar --spring.application.json='{"my":{"name":"test"}}'
- 命令行参数。
- 使用
@SpringBootTest
指定的参数值。 - 通过使用
@DynamicPropertySource
,在测试代码中指定参数。 - 通过使用
@TestPropertySource
,在测试代码中指定参数。 - 开发者工具,支持从
$HOME/.config/spring-boot
中加载配置参数。
加载配置文件的优先级:
-
Jar文件内的
application.properties
或者application.yaml
。 -
Jar文件内的
application-{profile}.properties
或者application-{profile}.yaml
。 -
Jar文件外的
application.properties
或者application.yaml
。 -
Jar文件外的
application-{profile}.properties
或者application-{profile}.yaml
。SpringBoot框架加载配置文件时,优先读取
properties
格式的同名配置文件。在启动类的
main
函数中增加如下代码,将显式禁用命令行参数。SpringApplication.setAddCommandLineProperties(false);
SpringBoot框架加载
application.properties
或者application.yaml
时,搜索路径如下:- 类路径,根路径。
- 类路径,
config
包。 - jar文件所在目录。
- jar文件所在目录的子目录
config
。 - jar文件所在目录的子目录
config
下的子目录。
在命令行中增加参数
spring.config.name
,可以指定配置文件的名称。java -jar myproject.jar --spring.config.name=myproject
使用上述样例启动应用程序,SpringBoot框架将搜索并加载配置文件
myproject.properties
或者myproject.yaml
。在命令行中增加参数
spring.config.location
,可以指定配置文件的搜索位置,样例如下:java -jar myproject.jar --spring.config.location=\ optional:classpath:/default.properties,\ optional:classpath:/override.properties
在配置文件名增加前缀
optional:
,表示假如找不到该位置的配置文件,并不影响应用程序启动,不会导致应用程序启动失败。spring.config.additional-location
和spring.config.location
的用途相同。SpringBoot加载配置文件的方案,灵活、强大,可依据业务特点酌情使用,不要花费过多的时间。
EnvironmentPostProcessor
允许在SpringBoot应用启动前修改Environment
中定义的属性的值。Java Config涉及如下注解:
@Value
@ConfigurationProperties
@Configuration
@EnableConfigurationProperties
@Validated
@Valid
@NotNull
需要结合样例、代码定义,深入理解上述注解的使用方法。
- 默认配置,通过
1.本站内容仅供参考,不作为任何法律依据。用户在使用本站内容时,应自行判断其真实性、准确性和完整性,并承担相应风险。
2.本站部分内容来源于互联网,仅用于交流学习研究知识,若侵犯了您的合法权益,请及时邮件或站内私信与本站联系,我们将尽快予以处理。
3.本文采用知识共享 署名4.0国际许可协议 [BY-NC-SA] 进行授权
4.根据《计算机软件保护条例》第十七条规定“为了学习和研究软件内含的设计思想和原理,通过安装、显示、传输或者存储软件等方式使用软件的,可以不经软件著作权人许可,不向其支付报酬。”您需知晓本站所有内容资源均来源于网络,仅供用户交流学习与研究使用,版权归属原版权方所有,版权争议与本站无关,用户本人下载后不能用作商业或非法用途,需在24个小时之内从您的电脑中彻底删除上述内容,否则后果均由用户承担责任;如果您访问和下载此文件,表示您同意只将此文件用于参考、学习而非其他用途,否则一切后果请您自行承担,如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。
5.本站是非经营性个人站点,所有软件信息均来自网络,所有资源仅供学习参考研究目的,并不贩卖软件,不存在任何商业目的及用途
暂无评论内容