Spring 4自动装配泛型类在测试中工作,在部署到服务器

时间:2015-08-02 11:09:28

标签: java spring generics autowired spring-4

我有一些泛型类,它们根据它们的泛型类型自动装配依赖项:

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的一些实现,而不管它是否是依赖所需的泛型类型匹配类型。

2 个答案:

答案 0 :(得分:1)

它是由JDK代理与cglib代理冲突引起的。一个用于部署,另一个用于测试。

答案 1 :(得分:-1)

您可能会找到多个bean定义。也许spring 4不支持动态类型泛型自动装配。