1、首先pom.xml
配置文件要在与<dependencies>
标签同级配置<profiles>
标签的配置
<profiles><!--测试环境--><profile><id>test</id><properties><env>test</env></properties></profile><!--生产环境--><profile><id>product</id><properties><env>product</env></properties></profile></profiles>
增加了profiles配置,在idea中就会出现相应的profile
2、 配置需要替换的环境的配置文件
maven执行package命令解析配置文件中的占位符进行替换
文档,配置需要替换的环境的配置文件
<filters><!-- 需要读取的配置文件来源 --><filter>src/main/filters/configfile_${env}.properties</filter></filters><resources><resource><directory>src/main/resources</directory><includes><!-- 需要替换占位符的配置文件--><include>spring-mvc.xml</include><include>config/configfile.properties</include></includes><filtering>true</filtering></resource></resources>
我的文件目录为src/main/filter
目录下为需要根据环境选取的配置文件,根据profile环境的不同,分为configfile_test.properties
文件和configfile_product.properties
文件,而我需要替换占位符的配置文件为src/main/resources
目录下的spring-mvc.xml
和config/configfile.properties
#configfile_test.properties文件config.id=test_1config.name=test_domino#configfile_product.properties 文件config.id=product_1config.name=product_domino#configfile.properties文件config_id=${config.id}config_name=${config.name}#spring-mvc.xml文件<bean id="configBean" class="cn.shutdown.web.bean.ConfigBean"><property name="id" value="${config.id}"/><property name="name" value="${config.name}"/></bean>
3、根据profile启动项目
如果我勾选test
profile 然后使用jetty run 启动项目
读取的配置就是 configfile_test.properties文件中的配置
在target
中被编译的配置文件spring-mvc.xml
和configfile.properties
文件中的占位符的值也被替换为configfile_test.properties
配置文件的值
如果使用product
profile进行编译和启动,配置文件中的${}
点位符也会相应的被替换为configfile_product.properties
中的配置的值
至此,根据环境读取相应环境的配置文件的功能就实现了
demo的源码地址
/j__domino/springboot-demo/tree/master/spring-config-demo/spring-profile-env-demo