你会注意到LocalSessionFactoryBean
implements FactoryBean<SessionFactory>
。这个接口被 Spring 用来创建其他类型的 bean。在这种情况下,一个SessionFactory
.
简单来说,Spring 会调用将返回该getObject()
实例的实例。为了说明发生了什么,请采用 Java config 声明 bean 的方式。LocalSessionFactoryBean
SessionFactory
@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
实例,而 Spring 仍然会调用该getObject()
方法并使用实例填充其上下文SessionFactory
。
有很多这样的FactoryBean
实现对 Spring 开发人员很有用。