分享 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()方法,用注解方式将其注入即可。