zoukankan      html  css  js  c++  java
  • Spring Aop 动态代理失效分析

    1. Spring Aop 原理

    Spring Aop 通过动态代理创建代理对象,在调用代理对象方法前后做增强。

    2. Transactional, Async 注解失效?

    当在动态代理方法中调用当前实例的 TransactionalAsync 标记的方法时,注解不会生效;
    原因:在此条件下调用注解标记的方法相当于调用实例本身的方法 this.func(),此时不会通过 Spring Aop 的增强,所以注解不生效

    3. 注解失效的处理方式

    • 配置 <aop:aspectj-autoproxy expose-proxy="true" /> 暴露代理对象,Spring Boot 中可使用 @EnableAspectJAutoProxy(exposeProxy=true) 注解
    • 将方法中的 this.func() 调用修改为以下形式
    // 从AppContext中获取当前代理对象(ThreadLocal)
    Object proxy = AppContext.currentProxy;
    // 调用代理方法
    proxy.func();
    
  • 相关阅读:
    php——验证身份证是否合法的函数
    php——离线执行任务
    代码整洁之道
    js自适应屏幕高度
    SSH Junit4测试
    Java Persistence with Hibernate
    SSH搭建
    js整理
    Hibernate 应用
    对学习的一点感想
  • 原文地址:https://www.cnblogs.com/cheney256/p/11415886.html
Copyright © 2011-2022 走看看