弹簧。动态依赖注入

时间:2013-11-06 09:57:37

标签: spring generics dependency-injection spring-data

我有以下问题。

我有一个通用的A类

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

    @Autowired
    protected DAO daoObject;

    ......

并且我正在尝试注入JpaRepository类型的genreic 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>
{    

}

2 个答案:

答案 0 :(得分:2)

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

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

此处具有限定符值“IRegisteredUserDAOImpl”的bean已连线。

答案 1 :(得分:2)

你应该可以使用最新的Spring 4 RC1来做到这一点。之前的版本根本不支持通用注入。有关详细信息,请参阅this ticket及相关提交。