我有一些泛型类,它们根据它们的泛型类型自动装配依赖项:
public abstract class GenericRestService<C extends AbstractTenantEntity> extends RestResource<C> {
protected final Logger log;
@Autowired(required = false)
protected GenericResourceService<C> service;
@Autowired(required = true)
protected JpaRepository<C, Long> repo;
// Now use service if one with specified generic type C is found, otherwise use repo
在我的春季测试中,一切正常:如果没有具有通用类型GenericResourceService<C>
的{{1}}被定义,则没有任何内容注入到字段C
中,我很乐意使用service
得到自动装配。
然而,当我在真实环境中运行我的应用程序时,总是注入repo
的一些实现,而不管它是否是依赖所需的泛型类型匹配类型。
答案 0 :(得分:1)
它是由JDK代理与cglib代理冲突引起的。一个用于部署,另一个用于测试。
答案 1 :(得分:-1)
您可能会找到多个bean定义。也许spring 4不支持动态类型泛型自动装配。