• 关于 spring-aop理解


    对于Aop 一直理解很是不到位  谈谈自己理解!

    Aop :

     Aspect: 切面    joinpoint 连接点  pointCut 切点  Advice 增强  targert 目标对象   weaving 织入  introduction等组成

    理解几个关键字:

      采用springboot 方式来快速实现的理解:

    故事:月黑风高杀人夜,一个人作案,但是被一个老王看见了 ,由于天气原因老王只看见是一个男的  高175公分,公安局要将10个175 男性抓起来,进行审问。

    pointCut:切点

      所谓的切点:男 175  可以理解为是对我们要对哪些方法进行增强的描述,好比我们买烟   对要买哪一类的描述

     代码体现在:* com.lwd.web.controller.*.*(..)  这里就是切点的描述  说任意类型的  com.lwd.web.controller 任意方法  任意参数的   最终说明了要增强的是哪一类方法

     @PointCut("execution(* com.lwd.web.controller.*.*(..))")
    public void say(){}

    joinpoint 连接点

    连接点:是一个比较更抽象的概念。  10 个人中每一个具体的人   也就是代码执行过程中具体的增强方法 具体的public com.lwd.web.controller.eat(){}  这个方法

    Advice 增强  审讯的动作

      before   after  afterreturning round  等五种增强  

      增强就是将对切点描述的方法  新增加执行的代码   

    @Aspect
    public class Aspect{
          
       @PointCut("execution(* com.lwd.web.controller.*.*(..))")
    public void say(){}
      
     @before("say") 
       public void sayeat(){
           新的代码   
        }
    
    }    

    Aspecct 切面   故事加起来

     那么什么是切面:个人理解 切面就是如果我们要对一个方法要进行增强 (增强:增加这个方法功能) 又不想改变原有方法  虽然我们可以采用代理的方式,aop本身就是动态代理实现 我们要如何将我们写的代码和原有的方法结合起来,我们写的增强代码放在那里  在什么时间增强这个代码  定义的这个切面类就是对上面啰嗦的抽象出来的类。也是上面  joinpoint  + pointcut + advice 所有构成了切面

    @Aspect
    public class AopAspect(){
    
    
    }

    在使用aop 的时候我们通常会通过joinpoint 连接点获取增强方法信息

     joinpoint 提供了

      getArgs() 获取连接点方法运行时的入参列表

      getSignature() 获取连接点方法签名对象  方法信息

      getTarget() 获取连接点所在的目标对象   方法所在类的对象

      getThis() 获取代理对象本身   代理对象

    proceedingJoinpoint 

      继承了joinpoint 新增了两个接口

      proceed()  通过反射执行目标对象的连接点出方法

      proceed(Objecct [] args ) 通过翻身执行目标对象连接点处的方法

      不过使用新的入参替换原来的入参

  • 相关阅读:
    语义分析的waf 目前就看到长亭 机器学习的waf有fortnet 阿里云的waf也算
    阿里云Web应用防火墙采用规则引擎、语义分析和深度学习引擎相结合的方式防护Web攻击
    算法冲刺
    SSI注入--嵌入HTML页面中的指令,类似jsp、asp对现有HTML页面增加动态生成内容,见后面例子
    TensorFlow框架下的RNN实践小结
    递归神经网络
    使用TensorFlow的递归神经网络(LSTM)进行序列预测
    【linux】free命令中cached和buffers的区别
    RNN介绍,较易懂
    在线面试、写代码工具
  • 原文地址:https://www.cnblogs.com/lwdmaib/p/10357384.html
Copyright © 2020-2023  润新知