spring问题:dao继承了HibernateDaoSupport,其中的sessionFactory并不能自动注入,只能手动注入吗?
我的dao继承了spring提供的HibernateDaoSupport,我能够通过手动注入sessionFactory,如下:<p:beanid="session...
我的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;但自动注入并不成功,为什么?
展开
2个回答
展开全部
因为你没有注入sessionFactory!
如果你继承了HibernateDaoSupport,你必须得用xml方式进行注入sessionFactory,不能用注解的方式注入,因为sessionFactory在HibernateDaoSupport里面,你看不到,所以没法用@Resource注入。
你上面写了private SessionFactory sessionFactory,但这样没用,必须得有setSessionFactory()这个方法才行。
反正我以前想用注解注入,没有成功。
两个解决办法:
1.你用xml初始化你的dao bean,并用xml方式注入sessionFactory.
2.可以用注解的方式注入,但不要继承HibernateDaoSupport,然后在dao里写上setSessionFactory()方法,用注解方式将其注入即可。
如果谁能用注解方式注入继承了HibernateDaoSupport类的dao,麻烦能告诉我一声,谢谢,呵呵。
如果你继承了HibernateDaoSupport,你必须得用xml方式进行注入sessionFactory,不能用注解的方式注入,因为sessionFactory在HibernateDaoSupport里面,你看不到,所以没法用@Resource注入。
你上面写了private SessionFactory sessionFactory,但这样没用,必须得有setSessionFactory()这个方法才行。
反正我以前想用注解注入,没有成功。
两个解决办法:
1.你用xml初始化你的dao bean,并用xml方式注入sessionFactory.
2.可以用注解的方式注入,但不要继承HibernateDaoSupport,然后在dao里写上setSessionFactory()方法,用注解方式将其注入即可。
如果谁能用注解方式注入继承了HibernateDaoSupport类的dao,麻烦能告诉我一声,谢谢,呵呵。
展开全部
我所了解的是:
父类依赖sessionFaction,具有setSessionFactory方法,但这个方法是final的,不能覆写。因此需要自己定义一个方法,并注入sessionFactory,然后调用父类setSessionFactory方法,将对象传入。
给你个例子:
@Repository
public class xxxImpl extends HibernateDaoSupport implements xxxDao {
@Resource
public void setSF(SessionFactory sf) {
super.setSessionFactory(sf);
}
.
.
.
}
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询