profile提供了一種在特定環(huán)境下運行特定配置的功能梆靖,例如開發(fā)時的測試數據庫和正式生產上的數據庫,通過激活不同的profile達到控制不同數據庫連接的目的挤巡。
任何@component和@configuration都能用來注解@profile冀膝,以確定加載不同配置的時機,在application.properties當中添加spring.profiles.active=dev/test甚负。
spring.profiles.active :確定激活那個配置
spring.profiles.include:無條件的添加激活配置
例如:
spring.profiles: prod
spring.profiles.include: proddb,prodmq
當prod被激活時柬焕,proddb和promq也會被激活。
測試
新建兩個使用@configuration注解的類腊敲,并實現InitializingBean接口
@Configuration
@Profile(value={"product"})
public class MyProfileProduct implements InitializingBean{
@Override
public void afterPropertiesSet() throws Exception {
// TODO Auto-generated method stub
System.out.println(this.getClass().getName()+" have bean created");
}
}
@Configuration
@Profile(value={"test"})
public class MyProfileTest implements InitializingBean{
@Override
public void afterPropertiesSet() throws Exception {
// TODO Auto-generated method stub
System.out.println(this.getClass().getName()+" have bean created");
}
}
在application.properties中添加如下配置項:
spring.profiles.active=product
啟動程序击喂,觀察哪個屬性類被成功創(chuàng)建。
使用SpringApplication.setAdditionalProfiles(profiles)也能達到同樣的效果;配置文件內容不變碰辅,在程序啟動前添加如下內容:
application.setAdditionalProfiles("test");
觀察輸出:兩個配置配置類均可以被創(chuàng)建懂昂。