Spring 之 Profile
阿新 • • 發佈:2018-11-13
Profile
為在不同環境下使用不同的配置提供了支援(如開發環境和生產環境下的資料庫配置不同).
-
- 通過設定 Environment 的 ActiveProfiles 來設定當前 context 需要使用的配置環境.在開發中使用 @Profile 註解類或者方法,達到不同環境下選擇例項化不同的 Bean.
- 通過設定 jvm 的 spring.profiles.active 引數來設定配置環境.
- Web 專案設定在 Servlet 的 context parameter 中.
示例:
package com.pangu.profile; public class DemoBean { private String content; public DemoBean(String content) { this.content = content; } public String getContent() { return content; } public void setContent(String content) { this.content = content; } }
package com.pangu.profile; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Profile; /** * @ClassName: ProfileConfig * @Description: TODO(這裡用一句話描述這個類的作用) * @author etfox * @date 2018年6月25日 上午9:00:58 * * @Copyright: 2018 www.etfox.com Inc. All rights reserved. */ @Configuration public class ProfileConfig { @Bean @Profile("dev") public DemoBean devDemoBean(){ return new DemoBean("from development profile"); } @Bean @Profile("prod") public DemoBean proDemoBean(){ return new DemoBean("from production profile"); } }
package com.pangu.profile; import org.springframework.context.annotation.AnnotationConfigApplicationContext; public class TestMain { public static void main(String[] args) { AnnotationConfigApplicationContext application = new AnnotationConfigApplicationContext(); application.getEnvironment().setActiveProfiles("prod");//設定 profile application.register(ProfileConfig.class);//註冊配置類 application.refresh();//重新整理容器 DemoBean demoBean = (DemoBean)application.getBean(DemoBean.class); System.out.println(demoBean.getContent()); application.close(); } }
執行結果:
八月 23, 2018 9:14:43 上午 org.springframework.context.annotation.AnnotationConfigApplicationContext prepareRefresh
資訊: Refreshing org.spring[email protected]5d099f62: startup date [Thu Aug 23 09:14:43 CST 2018]; root of context hierarchy
from production profile
八月 23, 2018 9:14:43 上午 org.springframework.context.annotation.AnnotationConfigApplicationContext doClose
資訊: Closing org.spring[email protected]5d099f62: startup date [Thu Aug 23 09:14:43 CST 2018]; root of context hierarchy