您的位置:首页 > 编程语言 > Java开发

spring注解注入泛型子类

2015-07-17 11:34 381 查看


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> {
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: