Java Spring Hibernate-无法获取当前线程的事务同步会话 为什么我要发布这个?

Java Spring Hibernate-无法获取当前线程的事务同步会话 为什么我要发布这个?,java,spring,security,spring-mvc,transactional,Java,Spring,Security,Spring Mvc,Transactional,经过几个小时的搜索/分析/变得偏执,我想和你分享我的错误——我已经确定了问题的原因 什么时候发生的? 在应用服务器中(在我的例子中是嵌入式tomcat),测试没有问题 在两个特定的@Services上使用@Transactional对方法进行了正确的注释 什么不是问题? @配置中缺少@EnableTransactionManagement 一些奇怪的AOP问题,例如在没有实现接口的服务中没有默认构造函数(AFAIK这个问题从Spring 4.0开始就不存在了) 出了什么问题? 我正在使用

经过几个小时的搜索/分析/变得偏执,我想和你分享我的错误——我已经确定了问题的原因

什么时候发生的?
  • 在应用服务器中(在我的例子中是嵌入式tomcat),测试没有问题
  • 在两个特定的@Services上使用@Transactional对方法进行了正确的注释
什么不是问题?
  • @配置中缺少@EnableTransactionManagement
  • 一些奇怪的AOP问题,例如在没有实现接口的服务中没有默认构造函数(AFAIK这个问题从Spring 4.0开始就不存在了)
出了什么问题? 我正在使用CustomPermissionEvaluator进行安全保护,例如用于保护以下方法:

@RequestMapping(value = "/{name}", method = RequestMethod.GET)
@PreAuthorize("hasPermission(null, 'SERVICE.ASSOCIATION.FIND_BY_NAME')")
public ResponseEntity<AssociationResult> findByName(@PathVariable String name) {
    //do stuff
}
@RequestMapping(value=“/{name}”,method=RequestMethod.GET)
@预授权(“hasPermission(null,'SERVICE.ASSOCIATION.FIND_BY_NAME'))
公共响应属性findByName(@PathVariable字符串名称){
//做事
}
为此,我必须扩展GlobalMethodSecurity配置,使我的CustomPermissionEvaluator投入业务。在那里,我使用@Autowiring访问权限评估所需的bean。猜猜看,这是TransactionInterceptor忽略的2@服务

tl;博士
不要将bean自动连接到GlobalMethodSecurityConfiguration=>之后它们将不会被正确拦截。

当我在CustomPermissionEvaluator类中使用@Lazy@Autowired注释服务类时,这对我来说是有效的。@Hubert和@KuldeepSChauhan……谢谢您的帮助,@Lazy注释也对我有效:)