zoukankan      html  css  js  c++  java
  • AOP

    一、Spring AOP注解失效及解决办法

      首先,AOP注解都是由动态代理实现的。

      1. 在对象内部方法A调用该对象另一个带AOP注解的方法B,被调用方法的AOP注解失效。

      第一种情况:方法A没有带AOP注解,那么在方法A中调用方法B不走代理,注解失效。

      第二种情况:方法A带AOP注解,方法A是由代理对象调用的。而在方法A内部调用B方法,实际上是被代理对象调用的B方法(即this.B),不走代理。

      解决方案:(1)避免在方法内部调用;(2)第二种情况,获取当前代理对象,在方法内部使用代理对象调用B;

      2. AOP注解的方法中使用@Autowired注入的对象为null

      原因:AOP注解的方法是private方法,JDK动态代理是通过创建代理接口的实现类来实现,CGLIB是通过子类实现的。无论是接口还是父类,都不能出现private方法,不然实现类或子类无法覆盖。

      如果方法是private或父类中方法被final修饰(注:final不能修饰抽象类和接口),导致代理过程中找不到该方法,引起代理对象创建出现问题,也导致了有的对象没有注入进来。

      所以,如果方法需要AOP注解,需要方法为非private。

      

    TODO:待整理

    1.https://blog.csdn.net/fumushan/article/details/80090947     Spring AOP注解失效原因和解决方案

    2.https://blog.csdn.net/tanga842428/article/details/52716875  Spring两种代理浅谈

    3.https://www.cnblogs.com/hongwz/p/5764917.html   AOP详解

    4.https://www.cnblogs.com/xiaoluo501395377/p/3383130.html    java动态代理机制详解

    5.https://blog.csdn.net/lookthatgirl/article/details/36387509  Spring AOP代理Controller类

    6、https://www.cnblogs.com/gonjan-blog/p/6685611.html   代理模式详解(很好)
    7、https://blog.csdn.net/jiangyunlovec/article/details/53413516  Proxy

  • 相关阅读:
    BUAA 2020 软件工程 个人项目作业
    BUAA 2020 软件工程 个人博客作业
    BUAA 2020 软件工程 热身作业
    面向对象设计与构造2019 第四单元总结博客作业
    面向对象设计与构造2019 第三单元总结博客作业
    Windows 安装rabbitmq
    windows 安装mongodb4.2.7
    docker安装(ubuntu20.04)
    C# 文件操作
    经纬度转换 sql 自定义函数
  • 原文地址:https://www.cnblogs.com/lmmblogs/p/9258550.html
Copyright © 2011-2022 走看看