gpt4 book ai didi

java - 命名类的 NoUniqueBeanDefinitionException

转载 作者:行者123 更新时间:2023-11-30 04:27:22 27 4
gpt4 key购买 nike

我正在使用 Spring 3.2.2,并且想知道是否有一种方法可以按类类型注入(inject) bean,而无需显式为其提供字符串名称。例如:

@Named
public MyClass{
}

@Named
public MyOtherClass extends MyClass{
}

@Named
public class Foo{
public void blah(){
MyClass myClass = context.getBean(MyClass.class);
}
}

这将生成:

org.springframework.beans.factory.NoUniqueBeanDefinitionException:没有定义类型 [MyClass] 的合格 bean:期望单个匹配 bean,但找到 2:myClass,myOtherClass

有没有一种方法可以在不使用字符串名称的情况下说“使用与类名完全匹配的类名”?

换句话说,我不想这样做:

@Named("MyClass")...
@Named("MyOtherClass")...

MyClass myClass = context.getBean("MyClass");

谢谢!

最佳答案

这就是 § 5.4.5 of Spring manual每当遇到非唯一依赖 bean 定义时建议:

  • 放弃 Autowiring ,转而采用显式装配。
  • 通过将 bean 定义的 autowire-candidate 属性设置为 false 来避免 Autowiring ,如下一节所述。
  • 通过将单个 Bean 元素的 Primary 属性设置为 true,将其指定为主要候选者。
  • 如果您使用的是 Java 5 或更高版本,请通过基于注释的配置实现更细粒度的控制,如 Section 5.9, “Annotation-based container configuration”. 中所述。

关于java - 命名类的 NoUniqueBeanDefinitionException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15524268/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com