这几天学了下spring和hibernate整合,现在的思路是这个样子:service和dao层的类都规到了spring的IOC容器里面管理。在配置文件中一般有<bean id="datasource">,<bean id="sessionFactory">, <bean id="userDao">
上面配置没贴全,但大概意思大家应该明白,原理就是datasource注入sessionFactory,然后将sessionFactory注入userDao。userDao一般继承一个HibernateDaoSupport,这个基类中有sessionFactory的注入方法。sessionFactory的实现类一般是spring提供的org.springframework.orm.hibernate3.LocalSessionFactoryBean, 我的问题就是HibernateDaoSupport中接收sessionFactory注入的方法参数类型是org.hibernate.SessionFactory,而我们通常配置的LocalSessionFactoryBean却和org.hibernate.SessionFactory没有任何继承关系。这到底是为什么呢?没有继承关系,却能够注入?由于能力问题,想了一上午没弄明白,看源代码也发现缘由。请大家指点。谢谢了
上面配置没贴全,但大概意思大家应该明白,原理就是datasource注入sessionFactory,然后将sessionFactory注入userDao。userDao一般继承一个HibernateDaoSupport,这个基类中有sessionFactory的注入方法。sessionFactory的实现类一般是spring提供的org.springframework.orm.hibernate3.LocalSessionFactoryBean, 我的问题就是HibernateDaoSupport中接收sessionFactory注入的方法参数类型是org.hibernate.SessionFactory,而我们通常配置的LocalSessionFactoryBean却和org.hibernate.SessionFactory没有任何继承关系。这到底是为什么呢?没有继承关系,却能够注入?由于能力问题,想了一上午没弄明白,看源代码也发现缘由。请大家指点。谢谢了
返回的对象装配,AbstractSessionFactoryBean中的getObject()返回的是org.hibernate.SessionFactory