对于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 ) 通过翻身执行目标对象连接点处的方法

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

关于 spring-aop理解的更多相关文章

  1. spring AOP理解和相关术语

    一.AOP理解 AOP:横向抽取机制,底层使用代理方式实现. 示例: 现有LogDAO接口以及实现Log接口的Log类.类有add的方法,现在要打印add方法的开始时间和结束时间.(即增强Log的ad ...

  2. spring aop 理解

    aop简介 aop是spring 的两大特性之一,还有IOC.主要提供面向切面的编程思想,区分于面向对象编程. aop原理(动态代理+反射) 在一个方法体中,可能会存在很多其他的方法调用,我们可以把每 ...

  3. Spring AOP理解

    Spring的核心思想的IOC和AOP.最近学习AOP,对切面的学习有了进一步的认识. Spring用代理类包裹切面,把他们织入到Spring管理的bean中.也就是说代理类伪装成目标类,它会截取对目 ...

  4. Spring aop 原始的工作原理的理解

    理解完aop的名词解释,继续学习spring aop的工作原理. 首先明确aop到底是什么东西?又如何不违单一原则并实现交叉处理呢? 如果对它的认识只停留在面向切面编程,那就脏了.从oop(Objec ...

  5. 正确理解Spring AOP中的Around advice

    Spring AOP中,有Before advice和After advice,这两个advice从字面上就可以很容易理解,但是Around advice就有点麻烦了. 乍一看好像是Before ad ...

  6. 我所理解的Spring AOP的基本概念

    Spring AOP中的概念晦涩难懂,读官方文档更是像读天书,看了非常多样例后,写一些自己理解的一些spring的概念.要理解面向切面编程,要首先理解代理模式和动态代理模式. 如果一个OA系统中的一个 ...

  7. 深入理解Spring AOP之二代理对象生成

    深入理解Spring AOP之二代理对象生成 spring代理对象 上一篇博客中讲到了Spring的一些基本概念和初步讲了实现方法,当中提到了动态代理技术,包含JDK动态代理技术和Cglib动态代理 ...

  8. 简单直白的去理解AOP,了解Spring AOP,使用 @AspectJ - 读书笔记

    AOP = Aspect Oriental Programing  面向切面编程 文章里不讲AOP术语,什么连接点.切点.切面什么的,这玩意太绕,记不住也罢.旨在以简单.直白的方式理解AOP,理解Sp ...

  9. Spring Aop的理解和简单实现

    1.AOP概念 所说的面向切面编程其实就是在处理一系列业务逻辑的时候这一系列动作看成一个动作集合.比如连接数据库来说: 加载驱动-----获取class--------获取连接对象-------访问数 ...

  10. Spring AOP深入理解之拦截器调用

    Spring AOP深入理解之拦截器调用 Spring AOP代理对象生成回想 上一篇博客中:深入理解Spring AOP之二代理对象生成介绍了Spring代理对象是怎样生成的,当中重点介绍了JDK动 ...

随机推荐

  1. Android 位置服务

    原文来自:http://developer.android.com/guide/topics/location/strategies.html 位置策略 注意: 本指南仅限android.locati ...

  2. 再次拿起live writer

    再次拿起live writer 第一次接触这哥们还是使用NPOI时,当时这个开源项目的发起人tonyqus让我知道了这家伙,感觉很不错,我们不需要直接用网页进行编辑内容,而且可以突破网页编辑器单调的设 ...

  3. Linux下elk安装配置

    安装jdkJDK版本大于1.8 elk下载地址:https://www.elastic.co/products注意:elk三个版本都要保持一致. rpm -ivh elasticsearch-5.4. ...

  4. Android(java)学习笔记10:同步中的死锁问题以及线程通信问题

    1. 同步弊端: (1)效率低 (2)如果出现了同步嵌套,就容易产生死锁问题 死锁问题及其代码 : (1)是指两个或者两个以上的线程在执行的过程中,因争夺资源产生的一种互相等待现象 (2)同步代码块的 ...

  5. Android(java)学习笔记48:通过反射获得带参构造方法并且使用

    1. 反射获得带参构造方法并且使用: (1)获取字节码文件对象       Class c = Class.forName("cn.itcast_01.Person"); (2)获 ...

  6. “标准查询运算符”是组成语言集成查询 (LINQ) 模式的方法

    “标准查询运算符”是组成语言集成查询 (LINQ) 模式的方法.大多数这些方法都在序列上运行,其中的序列是一个对象,其类型实现了IEnumerable<T> 接口或 IQueryable& ...

  7. bzoj 3028 生成函数

    计算完后为 f(x): 根据我翻高数书,终于推倒出来了. (- ̄▽ ̄)-

  8. java中equals以及==的用法(简单介绍)

    简单介绍 equals方法是java.lang.Object类的方法 有两种用法说明: 一.对于字符串变量来说,使用“==”和“equals()”方法比较字符串时,其比较方法不同. 1.“==”比较两 ...

  9. Android学习笔记_72_Spinner的用法

    一.普通 1. <?xml version="1.0" encoding="utf-8"?> <TextView xmlns:android= ...

  10. grunt_beginner

    前端集成解决方案:一套包含框架 和 工具,便于开发者快速构建美丽实用的web应用程序的工作流,同时 这套工作流必须是稳健强壮的. Yeman Bower web包管理器 框架.库.公共部分 Grunt ...