我是 Springs 的新手,所以请不要介意我的问题是否愚蠢
我有一个实现两个接口(interface)的类
public class AAA implements BBB, CCC {
}
public interface BBB {
void method BBB_method();
}
public interface CCC {
void CCC_method();
}
我在 Context 类中定义 bean 对象,如下所示:
public class Context {
@Bean
public BBB myObject(){
return new AAA();
}
@Bean
public CCC myObject(){ //Issue is here
return new AAA(); //Duplicate API name not allowed
}
}
我已经将 Bean Autowiring 到了 2 个不同的类中,如下所示:
@Autowired
private BBB myObject;
@Autowired
private CCC myObject;
Autowiring 它并在 Context 类中定义 bean 的最佳方法应该是什么?在Context.java中定义2个bean对象有意义吗?如何解决这种情况,我希望我的 bean 自动连接到两个不同的接口(interface)(并且对象名称相同......在我的例子中是 myObject)?非常感谢您的回复。谢谢!
最佳答案
您错过的一点是,您不需要与引用变量名称相同的方法名称,即,您不需要将方法名称命名为 myObject
。
Spring 容器只是尝试查找依赖项的实现类,如果找到,它们将被注入(inject)到 Autowired
字段中(引用变量名称并不重要,只是它们的类型,即类名称很重要)。
在您的 Context
类中,您不能定义具有相同签名的两个方法,因此请将它们更改为如下所示的名称:
public class Context {
@Bean
public BBB bObject(){
return new AAA();
}
@Bean
public CCC cObject(){
return new AAA();
}
}
关于java - Spring bean 实现两个接口(interface),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43009904/