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

  • 相关阅读:
    spark on yarn模式下内存资源管理(笔记1)
    面试题10.3-变态跳台阶
    面试题10.2-青蛙跳
    面试题9-斐波那契数列
    面试题9-用两个栈来实现一个队列,完成队列的Push和Pop操作
    面试题6:输入一个链表,按链表值从尾到头的顺序返回一个ArrayList
    鸢尾花数据集-iris.data
    class之cls
    python 装饰器
    supervisor python开发的进程管理工具
  • 原文地址:https://www.cnblogs.com/lmmblogs/p/9258550.html
Copyright © 2011-2022 走看看