spring : HibernateDaoSupport,其中的sessionFactory并不能自动注入,只能手动

来源:互联网 发布:横须贺刺绣外套淘宝 编辑:程序博客网 时间:2024/06/07 18:15

spring问题:dao继承了HibernateDaoSupport,其中的sessionFactory并不能自动注入,只能手动注入吗?

2012-02-19 12:14匿名 | 浏览 3733 次
 编程语言
我的dao 继承了spring提供的HibernateDaoSupport,我能够通过手动注入sessionFactory,如下:<p:bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"><p:property name="configLocation" value="classpath:com/ning/biz/hibernate.cfg.xml"></p:property></p:bean>    <p:bean id="dao" class="com.ning.dao.StudentHibnateImpl">       <p:property name="sessionFactory" ref="sessionFactory"></p:property>    </p:bean> 。sessionFactory是HibernateDaoSupport继承下来的,其提供了final的getter and setter 方法,我在本人的dao中重写了一下,然后在配置文件中去掉了dao的配置,dao已经自动标注了@Repository("dao")@Autowired@Qualifier("dao")private SessionFactory sessionFactory;但自动注入并不成功,为什么?
2012-03-03 19:29网友采纳
因为你没有注入sessionFactory!如果你继承了HibernateDaoSupport,你必须得用xml方式进行注入sessionFactory,不能用注解的方式注入,因为sessionFactory在HibernateDaoSupport里面,你看不到,所以没法用@Resource注入。  你上面写了private SessionFactory sessionFactory,但这样没用,必须得有setSessionFactory()这个方法才行。反正我以前想用注解注入,没有成功。两个解决办法:1.你用xml初始化你的dao bean,并用xml方式注入sessionFactory.2.可以用注解的方式注入,但不要继承HibernateDaoSupport,然后在dao里写上setSessionFactory()方法,用注解方式将其注入即可。
0 0