spring boot @Bean 的使用

在spring boot 如果需要配置一个bean 像在spring mvc中一样,那么需要使用 @Bean 这个注解。

@Configuration //表示这个一个配置类,相当于spring的xml 文件
public class RabbitDDyiQueueConfig {

    public static final String DDYI_QUEUE = "DDYI_QUEUE";

    public static final String DDYI_DIRECTEXCHANGE = "DDYI_DIRECTEXCHANGE";

    public static final String DDYI_SEND_ROUTEKEY = "DDYI_SEND_ROUTEKEY";

    /**
     * 
     * @return
     */
    @Bean //相当于spring <bean id="ddyiQueue"  class = "org.springframework.amqp.core.Queue"> 默认的名称 就是方法名
    public Queue ddyiQueue(){
        return new Queue(DDYI_QUEUE);
    }



    @Bean
    public DirectExchange ddDirectExchange() {
        return new DirectExchange(DDYI_DIRECTEXCHANGE);
    }

    @Bean //如果需要传参数,直接加方法,默认参数按照类型匹配,如果多个参数,需要加@Qualifier("方法名称")
    public Binding DDBinding1a(@Qualifier("ddDirectExchange") DirectExchange directExchange,@Qualifier("ddyiQueue") Queue ddyiQueue) {
        return BindingBuilder.bind(ddyiQueue).to(directExchange).with(DDYI_SEND_ROUTEKEY);

    }


    @Bean
    public Binding DDBinding1a() {
        return BindingBuilder.bind(ddyiQueue()). //这和上面在方法里指定参数 不一样,确实现了相同的功能。
                // 因为spring boot 会对 加了@bean的方法 进行拦截。通过BeanMethodInterceptor这个拦截器,
                //如果  ddyiQueue() 的对象 没有初始化 ,会进行初始化并且放在单列map中,如果初始化了,直接从单列map中获取
                //如果 传的参数 没有 @Bean 这种类型注解,拦截器不会进行拦截,正常调用对应的set方法进行赋值
                to(ddDirectExchange()).
                with(DDYI_SEND_ROUTEKEY);

    }


}
initMethod :是初始化的方法
destroyMethod:

name : 指定id

bean 初始化 也可以指定顺序,通过@DependsOn 可以让bean 在指定依赖对象后面执行

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值