- Reference
- Core Features
- 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
必要联合样例、代码定义,深入理解上述注解的使用方法。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |