gpt4 book ai didi

java - Spring bean 实现两个接口(interface)

转载 作者:太空宇宙 更新时间:2023-11-04 11:38:44 24 4
gpt4 key购买 nike

我是 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/

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