为了账号安全,请及时绑定邮箱和手机立即绑定

春天不创造豆

春天不创造豆

慕标琳琳 2021-10-27 10:06:17
我有两个实现相同接口的 bean。两者都是在 Java 配置中创建的,如下所示:@Bean@Qualifier("kafkaEventSender")public IKafkaEventSender<KafkaData> kafkaEventSender(@Qualifier("EventBus") KafkaTemplate<String, Object> kafkaTemplate){    return new KafkaEventSender<>(kafkaTemplate, false);}@Bean@Qualifier("kafkaEventSenderAudited")public IKafkaEventSender<KafkaData> kafkaEventSenderAudited(@Qualifier("EventBus") KafkaTemplate<String, Object> kafkaTemplate){    return new KafkaEventSenderAudited<>(kafkaTemplate, false);}问题是 spring 不会只创建第二个 bean。知道为什么吗?
查看完整描述

3 回答

?
慕桂英4014372

TA贡献1871条经验 获得超13个赞

我有两个实现相同接口的 bean。两者都是在 Java 配置中创建的,如下所示:


@Bean

@Qualifier("kafkaEventSender")

public IKafkaEventSender<KafkaData> kafkaEventSender(@Qualifier("EventBus") KafkaTemplate<String, Object> kafkaTemplate){

    return new KafkaEventSender<>(kafkaTemplate, false);

}


@Bean

@Qualifier("kafkaEventSenderAudited")

public IKafkaEventSender<KafkaData> kafkaEventSenderAudited(@Qualifier("EventBus") KafkaTemplate<String, Object> kafkaTemplate){

    return new KafkaEventSenderAudited<>(kafkaTemplate, false);

}

问题是 spring 不会只创建第二个 bean。知道为什么吗?


查看完整回答
反对 回复 2021-10-27
?
慕妹3146593

TA贡献1820条经验 获得超9个赞

注解用于在 spring 容器中多个相同类型的可用 bean 中选择一个 bean。


当您使用@Bean 注解注解一个方法时,默认情况下,它会创建一个名称为相同方法名称的 bean。因此,例如:


    @Bean

    public BeanA itsBeanA() {

        return new BeanA();

    }


    @Bean(name = "specialBeanA")

    public BeanA itsAgainBeanA() {

        return new BeanA("specialConstructorParam");

    }


    @Bean

    public BeanB beanB(@Autowired @Qualifier("specialBeanA") BeanA beanA) {

        return new BeanB(beanA);

    }

第一个方法将创建一个名为“itsBeanA”的 BeanA 实例。其次,将创建一个名为“specialBeanA”的实例,因为我们在此处提供了 name 属性。可能有一个场景,你需要有多个相同类型的 bean(比如这里的 BeanA)。它将为容器使用所有相同类型的 bean 创建歧义,我们使用我们想要的 bean 名称指定 @Qualifier。我希望这有帮助。


查看完整回答
反对 回复 2021-10-27
?
浮云间

TA贡献1829条经验 获得超4个赞

好的,问题出在方法名称上,更改后,bean 已正确创建。在其他一些库配置类中有一个同名的方法。猜测这是问题所在。


查看完整回答
反对 回复 2021-10-27
  • 3 回答
  • 0 关注
  • 170 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信