• 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

  • 相关阅读:
    android应用程序的混淆打包
    在android market发布个人免费应用的步骤
    Eclipse使用教程之精华篇
    Android简单封装类似JQuery异步请求
    android自动打包方法(ant+proguard+签名)
    Android虚拟键盘弹出时挡住EditText解决方法
    android绝对布局
    Android访问php webservice
    Android SDK中 tools 工具介绍
    JSON 之JAVA 解析
  • 原文地址:https://www.cnblogs.com/lmmblogs/p/9258550.html
Copyright © 2020-2023  润新知