Spring Boot 配置加载顺序及属性加载顺序详解 Spring Boot 是一个流行的 Java 框架,用于快速构建基于 Spring 的应用程序。在 Spring Boot 中,配置加载顺序及属性加载顺序是一个非常重要的概念。我们可以通过多种方式来加载配置,例如 properties 文件、YAML 文件、系统环境变量、命令行参数等等。在本章节中,我们将详细介绍 Spring Boot 配置加载顺序及属性加载顺序。 配置加载顺序 在 Spring Boot 中,配置加载顺序是指在应用程序启动时,Spring Boot 如何加载配置文件的顺序。这个顺序非常重要,因为它将决定哪些配置文件将被加载,哪些将被覆盖。下面是 Spring Boot 配置加载顺序: 1. 开发者工具 `Devtools` 全局配置参数 2. 单元测试上的 `@TestPropertySource` 注解指定的参数 3. 单元测试上的 `@SpringBootTest` 注解指定的参数 4. 命令行指定的参数,如 `java -jar springboot.jar --name="Java技术栈"` 5. 命令行中的 `SPRING_APPLICATION_JSONJSON` 指定参数, 如 `java -Dspring.application.json='{"name":"Java技术栈"}'-jar springboot.jar` 6. `ServletConfig` 初始化参数 7. `ServletContext` 初始化参数 8. JNDI参数(如 `java:comp/env/spring.application.json`) 9. Java系统参数(来源:`System.getProperties()`) 10. 操作系统环境变量参数 11. `RandomValuePropertySource` 随机数,仅匹配:`ramdom.*` 12. JAR包外面的配置文件参数(`application-{profile}.properties(YAML)`) 13. JAR包里面的配置文件参数(`application-{profile}.properties(YAML)`) 14. JAR包外面的配置文件参数(`application.properties(YAML)`) 15. JAR包里面的配置文件参数(`application.properties(YAML)`) 16. `@Configuration`配置文件上 `@PropertySource` 注解加载的参数 17. 默认参数(通过 `SpringApplication.setDefaultProperties` 指定) 在上面的列表中,数字小的优先级越高,即数字小的会覆盖数字大的参数值。 属性加载顺序 在 Spring Boot 中,属性加载顺序是指在应用程序启动时,Spring Boot 如何加载属性的顺序。这个顺序非常重要,因为它将决定哪些属性将被加载,哪些将被覆盖。下面是 Spring Boot 属性加载顺序: 1. 使用 `@Value` 注解直接注入对应的值 2. 使用 `@ConfigurationProperties` 注解把对应的值绑定到一个对象 3. 直接获取注入 Environment 进行获取 在 Spring Boot 中,我们可以使用多种方式来加载属性,例如使用 `@Value` 注解直接注入对应的值,使用 `@ConfigurationProperties` 注解把对应的值绑定到一个对象,直接获取注入 Environment 进行获取等等。 实践验证 为了验证 Spring Boot 配置加载顺序及属性加载顺序,我们可以进行实践验证。例如,我们可以在主应用程序中添加 Java 系统参数: ```java @Bean public CommandLineRunner commandLineRunner() { return (args) -> { System.setProperty("name", "javastack-system-properties"); }; } ``` 然后,我们可以在 `application.properties` 文件中添加属性: ```properties name = javastack-application ``` 接着,我们可以在 `application-dev.properties` 文件中添加属性: ```properties name = javastack-application-dev ``` 我们可以添加测试类来验证配置加载顺序: ```java @RunWith(SpringRunner.class) @SpringBootTest(value = { "name=javastack-test", "sex=1" }) @ActiveProfiles("dev") public class SpringBootBestPracticeApplicationTests { @Value("${name}") private String name; @Test public void testName() { System.out.println(name); } } ``` 通过实践验证,我们可以看到 Spring Boot 配置加载顺序及属性加载顺序的实际效果。
























- 粉丝: 1
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


最新资源
- 市政工程资料表格(完整版).doc
- 医药公司部门职能划分.doc
- 子公司人事管理实施细则.doc
- 医院信息化效益分析.doc
- 西门子PLC课程设计三相六拍步进电动机控制程序的设计与调试.pdf
- 如何提高观察能力和推理能力.docx
- 过程管理手册网络安全及其在校园网中的应用.doc
- 幼儿园音乐课程游戏化探索与研究.doc
- 财务人员个人求职简历.doc
- 机械租赁使用管理制度汇总.doc
- 斯达康杭州研发生产中心段多功能厅大体积混凝土工程施工方案.doc
- 广告宣传费用巧筹划三个方案.doc
- 04.会计凭证.doc
- 行政管理本科社会实践调查报告.doc
- 开题报告答辩基于RS和GIS的宜昌市城市扩张研究.pptx
- 中班幼儿行为习惯养成评价表.doc


