关于 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 ) 通过翻身执行目标对象连接点处的方法
不过使用新的入参替换原来的入参
关于 spring-aop理解的更多相关文章
- spring AOP理解和相关术语
一.AOP理解 AOP:横向抽取机制,底层使用代理方式实现. 示例: 现有LogDAO接口以及实现Log接口的Log类.类有add的方法,现在要打印add方法的开始时间和结束时间.(即增强Log的ad ...
- spring aop 理解
aop简介 aop是spring 的两大特性之一,还有IOC.主要提供面向切面的编程思想,区分于面向对象编程. aop原理(动态代理+反射) 在一个方法体中,可能会存在很多其他的方法调用,我们可以把每 ...
- Spring AOP理解
Spring的核心思想的IOC和AOP.最近学习AOP,对切面的学习有了进一步的认识. Spring用代理类包裹切面,把他们织入到Spring管理的bean中.也就是说代理类伪装成目标类,它会截取对目 ...
- Spring aop 原始的工作原理的理解
理解完aop的名词解释,继续学习spring aop的工作原理. 首先明确aop到底是什么东西?又如何不违单一原则并实现交叉处理呢? 如果对它的认识只停留在面向切面编程,那就脏了.从oop(Objec ...
- 正确理解Spring AOP中的Around advice
Spring AOP中,有Before advice和After advice,这两个advice从字面上就可以很容易理解,但是Around advice就有点麻烦了. 乍一看好像是Before ad ...
- 我所理解的Spring AOP的基本概念
Spring AOP中的概念晦涩难懂,读官方文档更是像读天书,看了非常多样例后,写一些自己理解的一些spring的概念.要理解面向切面编程,要首先理解代理模式和动态代理模式. 如果一个OA系统中的一个 ...
- 深入理解Spring AOP之二代理对象生成
深入理解Spring AOP之二代理对象生成 spring代理对象 上一篇博客中讲到了Spring的一些基本概念和初步讲了实现方法,当中提到了动态代理技术,包含JDK动态代理技术和Cglib动态代理 ...
- 简单直白的去理解AOP,了解Spring AOP,使用 @AspectJ - 读书笔记
AOP = Aspect Oriental Programing 面向切面编程 文章里不讲AOP术语,什么连接点.切点.切面什么的,这玩意太绕,记不住也罢.旨在以简单.直白的方式理解AOP,理解Sp ...
- Spring Aop的理解和简单实现
1.AOP概念 所说的面向切面编程其实就是在处理一系列业务逻辑的时候这一系列动作看成一个动作集合.比如连接数据库来说: 加载驱动-----获取class--------获取连接对象-------访问数 ...
- Spring AOP深入理解之拦截器调用
Spring AOP深入理解之拦截器调用 Spring AOP代理对象生成回想 上一篇博客中:深入理解Spring AOP之二代理对象生成介绍了Spring代理对象是怎样生成的,当中重点介绍了JDK动 ...
随机推荐
- 小故事学设计模式之Observer : (三) 老婆帮忙订机票
(IT的事就是过场多,过场多了就容易忘,所以我们不妨看一个记一个,这也是一个办法,顺便还能跟同行们交流一下) 要和老婆一起回老家了, 成都离我们安徽太远, 两个人飞一下过去就要花掉近三千块, 于是我 ...
- Python语言程序设计基础(1)—— 程序设计基本方法
Everybody in this country should learn how to program a computer,because it teaches you how to think ...
- 【转】有关onpropertychange事件
<div style="border:1px solid #fc0;height:24px;width:300px;" id="target">&l ...
- Object c的NSString的使用,创建,拼接和分隔,子string,substring
main: // // main.m // StringDemo // // Created by 千 on 16/9/22. // Copyright © 2016年 kodulf. All ...
- SpringMVC学习记录七——sjon数据交互和拦截器
21 json数据交互 21.1 为什么要进行json数据交互 json数据格式在接口调用中.html页面中较常用,json格式比较简单,解析还比较方便. 比如:webservi ...
- Android学习笔记_74_Android回调函数触发的几种方式 广播 静态对象
一.通过广播方式: 1.比如登录.假如下面这个方法是外界调用的,那么怎样在LoginActivity里面执行登录操作,成功之后在回调listener接口呢?如果是平常的类,可以通过构造函数将监听类对象 ...
- MR中简单实现自定义的输入输出格式
import java.io.DataOutput; import java.io.IOException; import java.util.HashMap; import java.util.Ma ...
- 如何解决mosh中翻页只能查看一屏的问题
最近用mosh替换了ssh作为连接开发机的工具,发现另外一个问题,ls cat随便什么命令输出结果超过一行的,向上翻页就没有了,找了下官网的FAQ也提到了这个问题,目前解决方案是使用tmux或者scr ...
- 188. Best Time to Buy and Sell Stock IV——LeetCode
Say you have an array for which the ith element is the price of a given stock on day i. Design an al ...
- js关于密码框强弱度的提示
三种密码强度的正则表达式: 较弱:全是数字或全是字母 6-16个字符:/^[0-9]{6,16}$|^[a-zA-Z]{6,16}$/; 中级:数字.26个英文字母 6-16个字符: /^[A-Za- ...