多环境配置
我们知道 springboot
是支持多环境配置的,具体做法就是将 application.properties
按照不同环境命名,例如我们需要区分两个环境,开发环境(dev
) 和 正式环境(rc
),那我们就可以使用如下配置:
1 | - src/main/java |
只要将这三份配置文件放在 resources
文件夹中,通过打包后的启动命令 java -jar xx.jar --spring.profiles.active=rc
就可以让应用使用 application-rc.properties
中的配置。
自定义配置文件
一般情况下,我们可以将所有的配置都放在 application.properties
中,但如果 application.properties
中的配置项过多,那么我们也可以进行拆分,将一些配置信息独立出来放在一个新的配置文件中,如:
1 | - src/main/java |
默认情况下,springboot
是不会加载 cdn.properties
,在这种情况下,我们需要手动加载这份配置文件,以使用注解@PropertySource
为例:
1 |
|
自定义配置文件的多环境配置
如果我们的自定义配置文件也要按照不同环境区分,又改如何处理呢?如:
1 | - src/main/java |
Maven 配置
我们可以使用maven
中的 profile
配置,该配置可以在打包的时候只打包指定 profile
下的配置。比如,我们可以把配置文件调整下结构:
1 | - src/main/java |
同时在 pom.xml
中添加 <profiles></profiles>
配置,如:
1 |
|
修改完成后,我们可以使用 maven
打包命令-P
来打包指定的 profile
(如 mvn clean package -Pdev
打包 dev
的文件夹下的配置文件),这种情况下,我们不需要修改上面 CdnProperty
类,因为此时的 classpath
中的 cdn.properties
就是 dev
文件夹的配置文件。
因为此处我们没有分开打包 application.properties
,所以 启动命令依然要指定 --spring.profiles.active
。
Spring 配置
1 | - src/main/java |
在之前 Spring中Properties 中,介绍过 @PropertySources
的部分源码,其中有一段:
1 | // ConfigurationClassParser.java |
可以看到,其实 @PropertySource(value = {"classpath:cdn.properties"})
是支持 profile
的占位符替换的,因此我们只要修改下路径即可:
1 |
|