你会注意到LocalSessionFactoryBean
implements FactoryBean<SessionFactory>
。这个接口被Spring用来创建其他类型的bean。在这种情况下,SessionFactory
。
简而言之,Spring将调用getObject()
上的LocalSessionFactoryBean
实例,它将返回SessionFactory
实例。为了说明发生了什么,采用Java配置方式来声明bean。
@Bean
public SessionFactory sessionFactory() throws IOException {
LocalSessionFactoryBean sessionFactoryBean = new LocalSessionFactoryBean();
sessionFactoryBean.setDataSource(dataSource());
Properties hibernateProperties = new Properties();
sessionFactoryBean.setHibernateProperties(hibernateProperties);
sessionFactoryBean.afterPropertiesSet();
return sessionFactoryBean.getObject();
}
你也可能返回LocalSessionFactoryBean
实例和春天还是会叫getObject()
方法和填充它与一个SessionFactory
实例上下文。
有许多这样的FactoryBean
实现对Spring开发人员非常有用。