spring profile激活處理

1.使用背景

項目開發一共有三個環境:測試環境,灰度環境和生產環境,好比咱們想在測試環境下,不加載某些配置信息,能夠經過profile來實現spring

2.激活profile實現方式

  1. JVM增長參數spring.profiles.active設置
  2. 在ServletContextListener 中初始化屬性spring.profiles.active

3. JVM增長參數spring.profiles.active設置

在JVM中增長參數spring.profiles.active設置,若是咱們想設置spring.profiles.active爲dev,使用Dspring.profiles.active="dev" 。緩存

此種方式須要修改tomcat的JVM配置,通用性不高。tomcat

4. 在ServletContextListener 中初始化spring.profiles.active

寫一個類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

相關文章
相關標籤/搜索