首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 其他教程 > 操作系统 >

dao对象不能施用注解@Repository实例化的情形之一

2012-09-01 
dao对象不能使用注解@Repository实例化的情形之一项目中定义一个dao对象,继承了 JdbcDaoSupport,在dao中使

dao对象不能使用注解@Repository实例化的情形之一

项目中定义一个dao对象,继承了 JdbcDaoSupport,在dao中使用getJdbcTemplate操作数据库,则在dao上添加@Repository注解,实例化失败

?

原因分析:

JdbcDaoSupport的父类DaoSupport继承了InitializingBean,在系统启动实例化dao时,会首先实例化JdbcDaoSupport,实例化后,执行立即检查dao配置,发现dataSource为null,则报错,dao实例化失败。

?

因为使用JdbcDaoSupport 的getJdbcTemplate得到的jdbcTemplate需要传入一个DataSource对象,因此必须重写JdbcDaoSupport的getDataSource()方法,把@Resource标记的dataSource传入进去,但是JdbcDaoSupport的此方法设置为final,因此不能传入dataSource。

?

如果dao继承JdbcTemplate,则可以传入dataSource

?

解决办法:

在spring.xml文件中配置此dao

?

<bean id="xxxDao" ref="dataSource"/>
?</bean>

?

另外,在spring.xml配置一个JdbcTemplate对象,然后把JdbcTemplate对象注入给JdbcDaoSupport,这样就可以使用@Repository,但是我得到了JdbcTemplate对象,还继承JdbcDaoSupport做什么?

热点排行