假设我有以下依赖项:
@Configuration
public class MyCfg {
// ...
@Bean
public Session session() {
return sessionFactory().getCurrentSession();
}
}
@Repository
@Transactional
public class MyRepo {
@Autowired
private Session session;
}
sessionFactory()
设置正确。如果我注入SessionFactory
而不是Session
,则效果很好。但是,如果尝试并注入Session
,则由于没有绑定到线程的会话,它会死于容器引导程序上的异常。由于存储库为
@Transactional
,所以我知道在运行时将有一个会话。我如何使它工作,以便它在运行时注入AOP初始化的Session
,但是在实例化仓库时不尝试解决它? 最佳答案
这种方法会给您带来很多麻烦。现在应该注入Session
,而不是注入您现在自动作为单例作用域的SessionFactory
。在Session
带注释的方法中获取的@Transactional
实例将遵守那些交易规则,例如:
@Transactional(readonly=true)
public List<Person> getPersons() {
Session session = sessionFactory.getCurrentSession();
//find those darn people.
}
@Autowired
private SessionFactory sessionFactory;
关于java - Spring -“后期绑定(bind)”自动接线 bean ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6927171/