在@Configuration类中使用工厂bean的正确方法是什么?
假设我有以下SessionFactory:
@Bean
public AnnotationSessionFactoryBean sessionFactory() {
AnnotationSessionFactoryBean factory = new AnnotationSessionFactoryBean();
// set up properties etc.
return factory;
}
现在这个方法返回一个不实现SessionFactory的bean工厂.如果我在另一个bean中使用@Autowired作为SessionFactory,它工作得很好,并从bean工厂获取:
@Controller
public class MyController {
@Autowired SessionFactory sessionFactory;
// ...
}
我想没关系
但是,如果我想在同一个配置类中使用SessionFactory,它将成为一个问题:
@Bean
public HibernateTransactionManager transactionManager() {
HibernateTransactionManager man = new HibernateTransactionManager();
// Ideal - doesn't work because sessionFactory() return type doesn't match:
// SessionFactory sessionFactory = sessionFactory();
// Is this one correct?
// SessionFactory sessionFactory = (SessionFactory) sessionFactory().getObject();
man.setSessionFactory(sessionFactory);
return man;
}
什么是正确的方式来实现这种依赖?