今日方知-依赖注入

文章讨论了在使用RabbitMQ时如何通过`@Bean`注解声明和管理队列与交换机,以及如何利用入参名称作为依赖注入的关键。指出Spring容器中的`@Bean`方法根据参数名选择Bean对象,但此特性在普通Java代码中并不适用。
摘要由CSDN通过智能技术生成

在学习MQ时我遇到了一个问题

@Configuration
public class RabbitMQConfig {
//声明推送的队列名
// private String simplename = "spring.lz.silple";
// private String workname = "spring.lz.work";

/**
 * 创建一个队列对象,
 *
 * @return
 */
@Bean
public Queue Queue1() {
    return new Queue("com.lz.fanout1");
}
@Bean
public Queue Queue2() {
    return new Queue("com.lz.fanout2");
}
@Bean
public FanoutExchange exchange(){
    return new FanoutExchange("fanoutExchange");
}


/**
 * 队列绑定交换机,也可在可视化工具中进行绑定.
 *
 * @return
 */
@Bean
public Binding bindingFanoutQueue1(Queue Queue2, FanoutExchange exchange) {
    return BindingBuilder.bind(Queue2).to(exchange);
}

@Bean
public Binding bindingFanoutQueue2(Queue Queue1, FanoutExchange exchange) {
    return BindingBuilder.bind(Queue1).to(exchange);
}
}

问:为什么形式参数可以根据入参名称的不同而获取不同的BEAN。

答:@Bean注解用于声明创建Bean对象的方法。方法名就是Bean的名称,而方法的返回类型就是Bean的类型。当其他组件需要依赖这些Bean对象时,可以通过方法的入参名称来指定要注入的Bean对象。

问:当其他组件需要依赖这些Bean对象时,可以通过方法的入参名称来指定要注入的Bean对象。这个之对于bean有效?在普通java是否生效呢?

答:在Spring中,如果存在多个类型相同的Bean对象时,Spring容器无法确定要注入哪个Bean对象。为了解决这个问题,Spring提供了根据入参名称来获取Bean对象的方式。这种方式只在Spring容器中生效,而在普通的Java代码中是不生效的。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值