springboot可以通过application.properties或者bootstrap.properties里的spring.files.active配置文件区分不同环境下的配置。
bootstrap和application的区别
在 Spring Boot 中有两种上下文,一种是 bootstrap, 另外一种是 application, bootstrap 是应用程序的父上下文,也就是说 bootstrap 加载优先于 applicaton。bootstrap 主要用于从额外的资源来加载配置信息,还可以在本地外部配置文件中解密属性。这两个上下文共用一个环境,它是任何Spring应用程序的外部属性的来源。bootstrap 里面的属性会优先加载,它们默认也不能被本地相同配置覆盖。
因此,对比 application 配置文件,bootstrap 配置文件具有以下几个特性:
1.boostrap 由父 ApplicationContext 加载,比 applicaton 优先加载
2.boostrap 里面的属性不能被覆盖
bootstrap和application的应用场景
application 配置文件这个容易理解,主要用于 Spring Boot 项目的自动化配置。
bootstrap 配置文件有以下几个应用场景。
1.使用 Spring Cloud Config 配置中心时,这时需要在 bootstrap 配置文件中添加连接到配置中心的配置属性来加载外部配置中心的配置信息;
2.一些固定的不能被覆盖的属性;
3.一些加密/解密的场景;
所以对于springboot的单体应用来说,application.properties和bootstrap.properties都是可以设置spring.files.active属性来区分不同环境配置的。
比如我们可以设置test,dev,prod三个环境分别表示测试,开发,生产等环境
把三个环境相同的配置写到application.properties或者bootstrap.properties里,
不同的配置分别写到application-dev.properties,application-test.properties,application-prod.properties里或bootstrap-dev.properties,bootstrap-test.properties,bootstrap-prod.properties里
然后在application.properties或bootstrap.properties里设置spring.profiles.active=test
来指定测试环境引用配置,这里的test指环境名,更改这里的名字来实现不同环境的配置切换
如:
或
capture1.png
如此,springboot就能自动识别切换不同的环境配置啦。
参考:
https://blog.csdn.net/youanyyou/article/details/81178311
https://blog.51cto.com/4923168/2177950
网友评论