spring注解@Profile的使用案例,并注解测试用例演示,根据不同的条件实例化不同的bean

spring 的@Profile 的使用案例,和测试案例:

通过设置Enbironment ActiveProfiles 来设定当前的context需要使用的配置环境,,开发中使用@Profile注解在类,或方法上,来达到根据不同需求实例化不同的bean

 

结合测试 案例如下:

1  先导入spring-test  和junit 的jar 包

2  业务对应的类:只是用来装载结果,来验证不同的条件会实例化不同的bean

public classTestBean {
    privateString content;

    publicTestBean(String content) {
        this.content= content;
    }

    publicString getContent() {
        returncontent;
    }

    public voidsetContent(String content) {
        this.content= content;
    }

    @Override
    publicString toString() {
        return"TestBean{" +
                "content='"+ content +'\''+
                '}';
    }
}

3  编写配置类,在配置类中注册不同的bean,

@Configuration // 声明当前是一个配置类
public classTestConfig {

    @Bean // 声明为bean
    @Profile("good") //设置profile的条件
    publicTestBean goodTestBean(){
        return newTestBean("good上下文");
    }

    @Bean
    @Profile("bad")//设置profile的条件
    publicTestBean badTestBean(){
        return newTestBean("bad上下文");
    }
}

4  编写测试

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = {TestConfig.class})
@ActiveProfiles("good")
public classMyTest {
    @Autowired
    privateTestBeantestBean;

    @Test
    public voidprodBeanShouldInject(){
        String string ="good上下文";
        String result2=testBean.getContent();
        System.out.print("字符串的比对结果是"+string.equals(result2)+";因为实例化的bean的content内容是"+result2);

    }
}

控制台运行结果:

字符串的比对结果是true因为实例化的bean的content内容是good上下文

Process finished with exit code 0

 

如果将@Profile(“bad”)

控制台运行结果如下:

字符串的比对结果是false;因为实例化的bean的content内容是bad上下文

Process finished with exit code 0

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值