今日方知-依赖注入

在学习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代码中是不生效的。

你可能感兴趣的:(问题记录与解决,前端,java,数据库)