【发布时间】:2025-12-14 23:10:03
【问题描述】:
我正在尝试以这种方式自动装配接口列表:
@Autowired
private List<SomeInterface<SomeAbstractClass>> list;
这是我的接口和抽象类:
public interface SomeInterface<T extends SomeAbstractClass>
public abstract class SomeAbstractClass implements Serializable
这些是我的组件(它们应该在列表中结束):
@Component("componentA")
public class ImplementationA implements SomeAbstractClass<ClassAImpementingSomeAbstractClass>
@Component("componentB")
public class ImplementationB implements SomeAbstractClass<ClassBImpementingSomeAbstractClass>
抽象类的实现是这样定义的:
public class ClassAImpementingSomeAbstractClass extends SomeAbstractClass
public class ClassBImpementingSomeAbstractClass extends SomeAbstractClass
从 spring 3.2.5 迁移到 4.3.11 后出现问题。 在春季 3 中,我得到了具有 ImplementationA 和 ImplementationB 的列表。 移至 spring 4 后,我在部署期间遇到异常:
org.springframework.beans.factory.NoSuchBeanDefinitionException: 否 类型的限定 bean 'java.util.List
>' 可用:预期 至少 1 个符合自动装配候选资格的 bean。依赖 注释: {@org.springframework.beans.factory.annotation.Autowired(required=true)}
问题是为什么 spring 试图找到 typ List 的 bean?它不应该尝试查找 SomeInterface 类型的所有 bean 并将它们添加到列表中(完全是我在 spring 3 上得到的)?
感谢您的任何建议!
【问题讨论】: