【发布时间】:2012-08-07 17:38:14
【问题描述】:
我正在开发一个 Spring MVC 项目并尝试集成 Apache Shiro 以提高安全性。一切都很顺利,直到我意识到 Hibernate 在一次查询后过早地关闭了会话/连接并导致了一个 lazyinit 异常。毫不奇怪,我所做的应该在事务中完成,这样会话就不会关闭。
两难境地……
我尝试将 @Transactional 放在我的控制器方法上,但我得到了 404。查看我的日志,我可以看到,当 Spring 引导时,如果 @Transactional 注释在控制器中的任何方法上,它会忽略我的 HomeController 中的任何映射。
没有 @Transactional 并且它加载得很好,我可以看到 RequestMappingHandlerMapping bean 看到我的控制器中的所有 @RequestMapping 注释。
使用 @Transactional 但没有 DefaultAdvisorAutoProxyCreator,除了 Shiro 注释被忽略之外,它可以正常工作。
tldr: Shiro 需要 DefaultAdvisorAutoProxyCreator,但如果我创建了那个 bean,Spring 在使用 @Transactional 注释时会崩溃。
我正在寻求帮助,因为我现在完全不知道如何进行。
【问题讨论】: