spring注解--Profile

1. 作用

根据当前环境,动态的激活切换注入的bean;使用该功能,可以实现测试环境,生产环境的切换。

2. 用法

  • @Profile(属性名):默认是“default”
  • 环境参数的设置
    1. 虚拟机参数里面设置:-Dspring.profiles.active=test
    2. 使用代码的方式:使用无参构造器,然后设置Environment
  • @Profile可以放在@Bean上,也可以放在类上

3. 实例

  1. 给要注入的bean设置profile属性
@Configuration
public class MainConfig {
    @Profile("test")
    @Bean(name = "test")
    public TestBean testBean() {
        return new TestBean();
    }
    @Profile("dev")
    @Bean(name = "dev")
    public DevBean devBean() {
        return new DevBean();
    }
    @Profile("prod")
    @Bean(name = "prod")
    public ProdBean prodBean() {
        return new ProdBean();
    }
}
  1. 设置context环境属性
public class ProfileDemo {
    public static void main(String[] args) {
//        AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(MainConfig.class);
        //构建无参构造器
        AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext();
        //设置环境变量
        context.getEnvironment().setActiveProfiles("test");
        //注册configuration 类
        context.register(MainConfig.class);
        context.refresh();
        Arrays.stream(context.getBeanDefinitionNames()).forEach(p ->
                System.out.println(p)
        );
    }
  1. 输出,查看注入到容器中的bean
mainConfig
...
test --> 注入的testBean

4. Notes

没有设置profile属性的bean,在任何环境下都可以注入。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容