什么是⾃动配置?
Spring Boot 提供了默认的配置,如默认的 Bean ,去运⾏ Spring 应⽤。它是⾮侵⼊式的,只提供⼀个默认实现。
⼤多数情况下,⾃动配置的 Bean 满⾜了现有的业务场景,不需要去覆盖。但如果⾃动配置做的不够好,需要覆盖配置。⽐如通过命令⾏动态指定某个 jar ,按不同环境启动。那怎么办?这⾥先要考虑到配置的优先级。
Spring Boot 不单单从 application.properties 获取配置,所以我们可以在程序中多种设置配置属性。按照以下列表的优先级排列:
- 1. 命令⾏参数
- 2. java:comp/env ⾥的 JNDI 属性
- 3. JVM 系统属性
- 4. 操作系统环境变量
- 5. RandomValuePropertySource 属性类⽣成的 random.* 属性
- 6. 应⽤以外的 application.properties(或 yml)⽂件
- 7. 打包在应⽤内的 application.properties(或 yml)⽂件
- 8. 在应⽤ @Configuration 配置类中,⽤ @PropertySource 注解声明的属性⽂件
- 9. SpringApplication.setDefaultProperties 声明的默认属性
可⻅,命令⾏参数优先级最⾼。这个可以根据这个优先级,可以在测试或⽣产环境中快速地修改配置
参数值,⽽不需要重新打包和部署应⽤。
还有第 6 点,根据这个在多 moudle 的项⽬中,⽐如常⻅的项⽬分 api 、service、dao 等 moudles,往往会加⼀个 deploy moudle 去打包该业务各个⼦ moudle,应⽤以外的配置优先。
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END