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

标签 java spring spring-mvc

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

相关文章:

java - Spring 中的内容类型和@ResponseBody

java - 如果身份验证失败,则关闭 HTTP 连接

java - 是否有Java/Spring Web应用程序的表单生成器?

java - 使用 Spring MVC 提交表单时出错 - HTTP 状态 404

java - 如何在JAVA Swing中制作 slider 和LCD数字?

java - 在JSP页面中打印选中的值

java - 从扫描仪获取字符输入

java - 如何拆分下一个条目集迭代器?

java - 我们应该在连接工厂上调用 setClientId() 吗?

java - 自定义 validator 停止 spring 内部验证