spring泛型注入的问题

spring注解注入泛型子类


关于spring如何注入泛型实现类
以下是项目的工程图 

 
dao和service都使用了泛型设计  
泛型dao接口  
Java code 
1
public interface BaseDao<T, PK extends Serializable> {

泛型dao实现类  
Java code 
1
public class BaseDaoImpl<T, PK extends Serializable> implements BaseDao<T, PK> {

学员接口  
Java code 
1
public interface StudentDao extends BaseDao<Student, Integer> {

学员实现类  
Java code 
1
2
@Repository
public class StudentDaoImpl extends BaseDaoImpl<Student, Integer> implements StudentDao {

使用junit进行测试的时候会报下面的异常。  
Caused by: org.springframework.beans.factory.   NoUniqueBeanDefinitionException : No qualifying bean of type [cn.ssh.annotation.dao.BaseDao] is defined: expected single matching bean but found 4:    baseDaoImpl,studentDaoImpl,teacherDaoImpl,studentServiceImpl  
1 ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
2    StudentDao studentDaoImpl = (StudentDaoImpl) context.getBean("studentDaoImpl")


解决方案一:为BaseDaoImpl指定名称,后面调用时根据该名称即可.

1 @Repository("baseDao")
2 public class BaseDaoImpl<T, PK extends Serializable> implements BaseDao<T, PK> {
解决方案二:将BaseDaoImpl声明为抽象类,不交由spring ioc管理,子类交由spring管理即可.

1 public abstract class BaseDaoImpl<T, PK extends Serializable> implements BaseDao<T, PK> {

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值