1

我有以下问题。

我有一个通用的 A 类

public class A<T, DAO extends JpaRepository<?, ?>>
{    

    @Autowired
    protected DAO daoObject;

    ......

我正在尝试注入 JpaRepository 类型的类型 DAO 对象。

如果我只有一个注入对象(JpaRepository)的实现,那么没有问题,但如果我有多个,那么 spring 不知道要注入哪个对象并抛出异常。

问题是:如何根据通用信息进行动态化,注入正确的对象?

谢谢你。

public interface IRegisteredUserDAO extends JpaRepository<RegisteredUser, String> {

}


public interface IMailLogDao extends JpaRepository<MailLog, Long> {

   findByTo(String to);
}

我就这样用了

public class RegisteredUserVM extends YBTableViewModel<RegisteredUser, IRegisteredUserDAO>
{

更新:

public class MailLogVM extends YBTableViewModel<MailLog, IMailLogDao>
{    

}
4

2 回答 2

2

您应该能够使用最新的 Spring 4 RC1 来执行此操作。之前的版本根本不支持泛型注入。有关详细信息,请参阅此票证和相关提交。

于 2013-11-06T21:19:01.947 回答
2

您可以使用 Spring 的@Qualifier注解来注入正确的 bean:

@Autowired
@Qualifier("IRegisteredUserDAOImpl")
protected DAO daoObject;

这里连接了限定符值为“IRegisteredUserDAOImpl”的 bean。

于 2013-11-06T10:04:29.587 回答