zoukankan      html  css  js  c++  java
  • springboot项目-声明式事务失效

    1.项目背景

    • 集成了shiro配置

    2. 项目分析

    • 由于ShiroFilterFactoryBean实现了FactoryBean接口,所以它会提前被初始化。又因为SecurityManager,SecurityManager依赖于Realm实现类、Realm实现类又依赖于UserService,所以引发所有相关的bean提前初始化。
    • ShiroFilterFactoryBean -> SecurityManager -> Realm实现类 -> UserService
    • 但是此时还只是ApplicationContext中registerBeanPostProcessors注册BeanPostProcessor处理器的阶段,此时AnnotationAwareAspectJAutoProxyCreator还没有注册到BeanFactory中,UserService无法享受到事务处理!
      就是说在realm中注入的所有service都会提前加载,连带注入的service中,如果还有其他service注入也会提前加载,无法享受事务处理。

    3.解决方案

    • 在realm中注入service时,加上@lazy注解
    • 不在realm注入service,而是直接注入mapper
  • 相关阅读:
    printf,sprintf,fprintf的区别与联系
    linux repo init 遇到的问题
    POSTMAN使用说明
    HTTP协议-深入了解
    HTTP协议-详解篇
    HTTP协议-基础篇
    多线程学习
    I/O流
    String类学习&泛型
    集合
  • 原文地址:https://www.cnblogs.com/djq-jone/p/14348343.html
Copyright © 2011-2022 走看看