項目開發一共有三個環境:測試環境,灰度環境和生產環境,好比咱們想在測試環境下,不加載某些配置信息,能夠經過profile來實現spring
在JVM中增長參數spring.profiles.active設置,若是咱們想設置spring.profiles.active爲dev,使用Dspring.profiles.active="dev" 。緩存
此種方式須要修改tomcat的JVM配置,通用性不高。tomcat
寫一個類InitConfigListener實現接口ServletContextListener,重寫容器初始化方法contextInitialized(),設置屬性爲spring.profiles.active爲指定值environment。 environment能夠定義在一個屬性文件中,在使用maven構建時使用測試,灰度或者生產環境的屬性文件。 在contextInitialized方法中讀取指定屬性文件,獲取environment 值,經過setProperty便可實現。springboot
@WebListener public class InitConfigListener implements ServletContextListener { @Override public void contextInitialized(ServletContextEvent sce) { String environment = ""; //加載Properties屬性文件獲取environment值 //偵測jvm環境,並緩存到全局變量中 String env = System.setProperty("spring.profiles.active",environment); } @Override public void contextDestroyed(ServletContextEvent sce) { } }
spring.xml配置只在dev模式下加載配置文件spring-mybatis.xmlmybatis
<beans profile="dev"> <import resource="spring-mybatis.xml" /> </beans>
springboot使用註解@Profile和@Configuration來配置,@ActiveProfiles()在測試時切換環境jvm
你們能夠關注個人公衆號:不知風在何處,相互溝通,共同進步。maven