解决Spring框架的Dao层改用@Repository注解,无法使用JdbcDaoSupport的问题
2017-01-07 00:30
435 查看
目的:
想改用Spring框架强大的注解功能(@Repository注解)来实现自动注册dao的bean的功能(原来是在xml中配置的)。改完之后,运行的时候直接报错:
接着就是想着如何解决问题。网上找了一些资料,结合自己的理解,报错的原因是:修改之后,XML里面配置的DataSource就无法被Spring容器主动注入到dao里面!从而在初始化dao(此dao有继承了JdbcDaoSupport类)的bean的时候,如果获取不到DataSource或者JdbcTemplate的话,会报错:无法找到数据源。
备注:没修改之前,是用xml配置主动注入的:
网上找了几个文章,写得不错:
JdbcDaoSupport和Spring注解的转换 http://www.verydemo.com/demo_c143_i2948.html
Spring中JdbcDaoSupport的DataSource注入问题 http://www.tuicool.com/articles/JZnqIb
@Repository 不能直接用的解析 http://splinter-2.iteye.com/blog/1069765
用@Repository的一个实例:http://blog.csdn.net/show_me_the_world/article/details/47055841
最后,还是得在国外的一个网站中找到了解决办法!!百度了1个多小时,在国内的博客找了一遍都找不到我想要的解决办法。
http://www.mkyong.com/spring/how-to-autowire-datasource-in-jdbcdaosupport/
http://stackoverflow.com/questions/10570521/spring3-annotation-jdbcdaosupport
注意:搜索关键字:JdbcDaoSupport @Repository
附上最终的解决办法:
方法1:最简洁,用重写类构造函数的办法自动装配daoSupport需要用到的数据源!
方法2:也是差不多,初始化的时候自动装配数据源。
想改用Spring框架强大的注解功能(@Repository注解)来实现自动注册dao的bean的功能(原来是在xml中配置的)。改完之后,运行的时候直接报错:
Error creating bean with name 'UserVODao' defined in file [D:\JSP_MyEclipse\.metadata\.me_tcat7\webapps\XYG_WEBDEV_SAMPLE\WEB-INF\classes\com\xinyiglass\springSample\dao\impl\UserVODaoImpl.class]: Invocation of init method failed; nested exception is java.lang.IllegalArgumentException: 'dataSource' or 'jdbcTemplate' is required
接着就是想着如何解决问题。网上找了一些资料,结合自己的理解,报错的原因是:修改之后,XML里面配置的DataSource就无法被Spring容器主动注入到dao里面!从而在初始化dao(此dao有继承了JdbcDaoSupport类)的bean的时候,如果获取不到DataSource或者JdbcTemplate的话,会报错:无法找到数据源。
备注:没修改之前,是用xml配置主动注入的:
<bean id="UserVODao" class="com.xinyiglass.springSample.dao.impl.UserVODaoImpl" parent="abstractDao"/> <bean id="abstractDao" abstract="true"><property name="dataSource" ref="dataSource"/></bean>
网上找了几个文章,写得不错:
JdbcDaoSupport和Spring注解的转换 http://www.verydemo.com/demo_c143_i2948.html
Spring中JdbcDaoSupport的DataSource注入问题 http://www.tuicool.com/articles/JZnqIb
@Repository 不能直接用的解析 http://splinter-2.iteye.com/blog/1069765
用@Repository的一个实例:http://blog.csdn.net/show_me_the_world/article/details/47055841
最后,还是得在国外的一个网站中找到了解决办法!!百度了1个多小时,在国内的博客找了一遍都找不到我想要的解决办法。
http://www.mkyong.com/spring/how-to-autowire-datasource-in-jdbcdaosupport/
http://stackoverflow.com/questions/10570521/spring3-annotation-jdbcdaosupport
注意:搜索关键字:JdbcDaoSupport @Repository
附上最终的解决办法:
方法1:最简洁,用重写类构造函数的办法自动装配daoSupport需要用到的数据源!
@Autowired UserVODaoImpl(DataSource dataSource) { setDataSource(dataSource); }
方法2:也是差不多,初始化的时候自动装配数据源。
@Autowired private DataSource dataSource; @PostConstruct private void initialize() { setDataSource(dataSource); }
相关文章推荐
- 微服务框架Spring Cloud介绍 Part2: Spring Cloud与微服务
- springmvc实现url路由功能
- spring aop 无法代理父类方法 的解决方法
- Spring MVC过滤器-超类 GenericFilterBean
- 一个jar包里的网站
- 一个jar包里的网站之文件上传
- 一个jar包里的网站之返回对媒体类型
- Spring和ThreadLocal
- Spring Boot 开发微服务
- Spring AOP动态代理-切面
- MyEclipse Web Project转Eclipse Dynamic Web Project
- 使用MVC微信支付返回get_brand_wcpay_request:fail
- Spring整合Quartz(JobDetailBean方式)
- Spring整合Quartz(JobDetailBean方式)
- 插件管理框架 for Delphi(一)
- 使用CSS框架布局的缺点和优点小结
- 一起动手编写Android图片加载框架
- Android中Volley框架下保持会话方法
- 基于.NET平台常用的框架和开源程序整理