SpringBoot文档之Externalized Configuration的阅读笔记
cnblogs 2024-08-19 08:09:01 阅读 63
- <li>
Core Features
Externalized Configuration
SpringBoot应用可以从properties文件、yaml文件、环境变量、命令行参数中得到配置参数。
代码里可以使用注解<code>@Value读取配置项的值。
配置项参数的加载顺序,后加载的属性,可以覆盖已加载的同名属性的值。
- <li>默认配置,通过
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.jarcode>
使用JVM的系统变量,样例如下:
java -Dspring.application.json='{"my":{"name":"test"}}' -jar myapp.jarcode>
使用命令行参数,样例如下:
li>java -jar myapp.jar --spring.application.json='{"my":{"name":"test"}}'code>
- 命令行参数。
- 使用
@SpringBootTest
指定的参数值。 - 通过使用
@DynamicPropertySource
,在测试代码中指定参数。 - 通过使用
@TestPropertySource
,在测试代码中指定参数。 - 开发者工具,支持从
$HOME/.config/spring-boot
中加载配置参数。
Reference
加载配置文件的优先级:
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
需要结合样例、代码定义,深入理解上述注解的使用方法。
声明
本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。