软件开发一般有多个环境,比如测试环境,开发环境,生产环境。spring运行根据不同环境注册不同组件。
以指定环境启动容器
当不需要指定环境时,我们仅需调用AnnotationConfigApplicationContext的有参构造器(传入配置类的class)即可启动容器。但是当我们需要设置环境时,便需要使用如下方法启动容器:
AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext();
//设置环境为dev和test
context.getEnvironment().setActiveProfiles("dev","test");
//注册配置类
context.register(MyConfig.class);
//刷新容器
context.refresh();
@Profile
在注册组件的同时可以指定该组件对应的环境,使用@Profile注解,传入对应的环境名即可,环境名可以任意取
如,在test环境下注册Color组件:
@Profile("test")
@Bean
public Color color(){
return new Color();
}