当前位置: 首页 > 知识库问答 >
问题:

实现两个接口的Spring bean

佴英奕
2023-03-14

我是个新手,所以请不要介意我的问题是愚蠢的

我有一个实现两个接口的类

public class AAA implements BBB, CCC {

}

public interface BBB {
  void method BBB_method();
}


public interface CCC {
  void CCC_method();
}

我正在上下文类中定义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
   }
}
@Autowired
private BBB myObject;

@Autowired
private CCC myObject;

共有1个答案

谷梁宜
2023-03-14

您没有注意到的一点是,您不需要与引用变量名相同的方法名,也就是,您不需要方法名为myobject

Spring container只是尝试找到依赖项的实现类,如果找到了,它们将被注入autowired字段(引用变量名不重要,重要的是它们的类型,即类名)。

context类中,不能定义具有相同签名的两个方法,因此将它们更改为如下所示的名称:

public class Context {

   @Bean
   public BBB bObject(){
       return new AAA();
   }

   @Bean
   public CCC cObject(){   
        return new AAA(); 
   }
}
 类似资料:
  • 有没有可能让一个Spring Bean实现两个接口,并能够使用任何一个接口自动连接Bean? 一个实现两个服务的类 我正在获取: 原因:org.springframework.beans.factory.NoSuchBeanDefinitionException:找不到依赖项[ServiceB]的[ServiceB]类型的合格bean:需要至少有一个bean可以作为此依赖项的自动候选项。依赖项批注

  • 类具有可以是两种类类型之一的属性,这就是为什么我试图创建类类型实现的接口 所以我不能使用目标实体,因为这两个类都可以使用。下面是错误堆栈:org.hibernate。AnnotationException:model.User中的未知mappedBy。登录时,引用的属性未知:model.login.user。请帮帮我

  • 一个接口: 两个实现bean: -单件bean并标记为 -原型Bean 在Manager类中: 观察:spring创建了和,然后创建了autowires。 预期:由于已经标记为,spring应该只创建这个bean并自动连接它。spring不需要创建的实例。这对性能/功能没有影响,但这看起来像是浪费的实例创建,只会被丢弃。

  • 本文向大家介绍java实现两个文件的拼接,包括了java实现两个文件的拼接的使用技巧和注意事项,需要的朋友参考一下 用Java语言实现两个文件的拼接与上一篇用Java实现两个文件的异或使用的方法都一样,都是FileInputStream()与FileOutputStream()方法,两个相同大小的文件a,b,把文件b拼接在文件a之后,输出的文件名为outfile具体代码详见下述内容: 以上就是本文

  • 问题内容: 在JDBC中,要连接和执行DB中的语句,我们主要使用Connection,Statement和ResultSet这两个接口。但是它们对应的对象后来用于运行诸如createStatement(),executeQuery(),next()等的方法。哪个类实现了这些方法?为什么将其称为连接对象而不是已实现的类对象? 问题答案: 在JDBC中,您首先需要通过调用来注册驱动程序 加载数据库类并

  • 问题内容: 我的意思是: 我用谷歌搜索,发现了这个: 表示定义接口方法的实现。但是接口没有实现,因此是不可能的。 但是,interface是100%抽象的类,抽象类可以实现接口(100%抽象的类)而无需实现其方法。将其定义为“接口”时会出现什么问题? 详细来说, 问题答案: 表示实现,当旨在声明仅提供不提供实现时。 A 100%,是功能上等同于,但它也可以实现,如果你想(在这种情况下,它不会保持1