同樣的,@Profile也是屬于spring framework中的特性,看看一般應(yīng)用到哪個場景;
如下代碼:
@Bean(initMethod = "init", destroyMethod = "destroy")
public DemoBean getBean() {
return new DemoBean();
}
通常來說,我們會有開發(fā)、測試、生產(chǎn)環(huán)境,如果有參數(shù)不同,那么就可以通過profile的屬性來初始化bean,配置項也可以通過profile來獲取不同的properties文件內(nèi)容,在其他章節(jié)里面有記錄;下面是dev和prod的兩種環(huán)境下的Bean的初始化方法:
@Bean
@Profile("prod")
public DemoBean getProdBean() {
return new DemoBean("prod");
}
@Bean
@Profile("dev")
public DemoBean getDevBean() {
return new DemoBean("dev");
}
測試一下:
public static void main(String[] args) {
AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext();
// 1、設(shè)置環(huán)境類型
context.getEnvironment().setActiveProfiles("prod");
// 2图张、注冊配置類
context.register(DemoBeanConfiguration.class);
// 3、刷新context
context.refresh();
DemoBean bean = context.getBean(DemoBean.class);
System.out.println(bean.profileName);
}
打印結(jié)果是prod
;
特別注意:代碼執(zhí)行順序不能調(diào)整,refresh在系統(tǒng)初始化后只允許調(diào)用一次;