注入通用参数化属性的最佳解决方法是什么?

Spring Jira中记录的一个简单示例:

@Component
public abstract class AbstractFoo<V extends Bar> {

   @Autowired
   protected V bar;
}

@Component
public ConcreteFoo1 extends AbstractFoo<ConcreteBar1> {
}

@Component
public ConcreteFoo2 extends AbstractFoo<ConcreteBar2> {
}

当我拥有这样的抽象AbstractFoo类并尝试确定应通过Generecis( ConcreteFoo1ConcreteFoo1 )注入的Spring bean时,Spring会引发如下异常:

org.springframework.beans.factory.BeanCreationException: 
Error creating bean with name 'foo.ConcreteFoo1'
Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: 
No unique bean of type [bar.Bar] is defined: 
expected single matching bean but found 2: [concreteBar1, concreteBar2]

我在春季3.2.1中测试了类似的方案。 解决此问题的最佳方法是什么?

于09年3月10日报告了此问题。
为什么在Spring中仍未实现此功能? 是否有任何并发​​症无法解决这种不足?

===============>>#1 票数:1 已采纳

就像您写了一样:

  @Autowired
  protected Bar bar; 

Spring只是不明白你想注入ConcreteBar1

因此,您可以使用setter注入:

public abstract class AbstractFoo<V extends Bar> {
    protected V bar;
} 

@Component
public class ConcreteFoo1 extends AbstractFoo<ConcreteBar1>{

@Inject
private void setBar(ConcreteBar1 bar){
    this.bar = bar;
}
}

  ask by Ondrej Bozek translate from so

未解决问题?本站智能推荐:

1回复

用Spring依赖注入Generic子类型

我试图将特定的Generic bean注入Generic子类型,但Spring无法解析依赖项。 通过从bean中删除类型,一切都按预期工作。 这是一个例子: 这是一个目标类: 取决于活动配置文件仅初始化CompanyBean或EmployeeBean ,而不是两者。 我也试
1回复

Spring 4对抽象泛型类的依赖注入不起作用

我有X和Y基类,它们具有多个实现。 但是,每种参数化类型只有一个实现,因此@Autowired应该能够确定需要哪个子类。 在将第二个参数U添加到基类X和Y (并因此添加到它们的所有子类)之前,这实际上是可行的。 但是添加之后,这是Spring初始化期间的错误: org.spr
1回复

Spring 3.2-如何将XML配置的FlatFileItemWriter注入Java类中的参数化属性

我们有一个当前应用程序,该应用程序使用XML配置的FlatFileItemWriter来生成固定长度的记录文件(“ FileItemWriter”)。 我们要添加第二个ItemWriter作为Java类,它将处理相同的块以更新数据库中的hstory表(“ HistoryItemWriter”)
1回复

在Spring Boot应用程序中注入的Spring Bean为NULL

我正在使用Spring Boot(1.5.3)开发REST Web服务。 为了对传入请求采取某些措施,我添加了以下所示的拦截器。 RequestInterceptor具有自动接线的Spring Bean RequestParser负责解析请求。 拦截器注册 还有我的Sp
1回复

使用@Autowired在bean构造函数中注入spring4 bean

我有类对象构造函数,其中参数之一是Long parent_id原因是对象是自相关的,如下所示: 当我尝试使用Gson反序列化时,我必须使用Gson创建对象。 使用parent_id我想创建Folder的新对象以将其应用于parent元素。 当我尝试做时: 我的道课:
1回复

Spring在没有@Autowired批注的构造函数中注入依赖项

我正在尝试这个官方Spring 教程中的示例,并且依赖于此代码: https://github.com/spring-guides/gs-async-method/tree/master/complete 如果你看一下AppRunner.java类的代码,我有两个问题: 1)当服
3回复

从单元测试中注入模拟Spring @Autowired依赖项的最佳方法是什么?

在测试这个类时,我基本上有四种注入模拟依赖项的方法: 在测试中使用Spring的ReflectionTestUtils来注入依赖项 向MyService添加构造函数 将setter方法添加到MyService 放宽对包受保护的依赖性可见性并直接设置字段
1回复

Spring,AspectJ:反序列化对象的注入

我需要将一些对象放入ActiveMQ,然后反序列化。 该对象包含瞬态字段,应在反序列化时对其进行初始化。 根据这份文件( http://docs.spring.io/spring/docs/3.0.x/spring-framework-reference/html/aop.html#aop-
1回复

Java注入-如何使用参数化构造函数注入Bean

我想使用@inject注入具有参数化构造函数的bean。 在注入时,我需要将参数传递给bean。 为了清楚地解释。 A类: B类,其中必须注入A类的bean: } 在类B中,必须以多种方法在本地使用beanA。 希望此代码段有助于理解我的问题。 我是Sprin
1回复

无法在托管bean中注入接口

我正在使用Spring和PrimeFaces编写Web应用程序。 我试图在我的managedBean中注入接口,但是当我尝试使用它时,它是null并且我得到一个异常。 这是datasource-config.xml : 我的managedBean类是这样的: } m