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> { |
1 | public abstract class BaseDaoImpl<T, PK extends Serializable> implements BaseDao<T, PK> { |