之前用Spring的注解模式配置Hibernate的时候觉得很简单。
使用@autowire
自动注入
@Autowired
private SessionFactory sessionFactory;
然后在方法中直接使用
Session session = sessionFactory.getCurrentSession()
但是,后来看源码的时候却有了疑问。
在XML配置文件中, bean
的配置里面 SessionFactory
映射的 类文件是org.springframework.orm.hibernate4.LocalSessionFactoryBean
<bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
然而打开 LocalSessionFactoryBean
类中的代码,却没有发现getCurrentSession()
这个方法。
后来查询资料才发现真正的原因。
LocalSessionFactoryBean
实现了 接口 FactoryBean
,FactoryBean
中有一个方法 : getObject()
根据Bean的Id, 从BeanFactory