我正在寻找将通用DAO注入服务的解决方案。
更具体地说,我正在寻找一种将通用用户DAO注入登录服务的方法。
就我而言,他们是:
class User
GenericUserDao<T extends User>
。我的第一个想法是宣布我的服务并注入我的DAO如下:
public class LoginService<DAO extends GenericUserDao<? extends User>> {
@Autowired
DAO userDao;
}
[...]
// declaration
@Autowired
LoginService<SpecialUserDao> userService;
但是在执行此操作时,Spring会将GenericUserDao注入我的LoginService,而不是SpecialUserDao。
因此,我尝试删除userDao字段上的@Autowired
注释,并简单地将我的LoginService声明为:
public class LoginService<DAO extends GenericUserDao<? extends User>> {
DAO userDao;
}
[...]
// declaration
@Autowired
LoginService<SpecialUserDao> userService;
但是后来没有注入任何东西,并且我在调用DAO方法时逻辑上得到了NullPointerException。
注入DAO的正确方法是什么?