关于 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动 ...
随机推荐
- python入门8 输入输出
输入 input() 输出 print() #coding:utf-8 #/usr/bin/python """ 2018-11-03 dinghanhua 输入输出 & ...
- RPMForge介绍及安装
网站RPMForge介绍,安装 http://wiki.centos.org/AdditionalResources/Repositories/RPMForge#head-f0c3ecee3dbb40 ...
- 【洛谷5309】[Ynoi2012] D1T1(分块)
点此看题面 大致题意: 两种操作,区间求和,将形如\(ax+y\)的位置的元素值加\(z\). 分块 这种题目显然就是按照\(x\)与\(\sqrt n\)的大小关系来分块. 对于\(x>\sq ...
- BZOJ4415:[SHOI2013]发牌(线段树)
Description 假设一开始,荷官拿出了一副新牌,这副牌有N张不同的牌,编号依次为1到N.由于是新牌,所以牌是按照顺序排好的,从牌库顶开始,依次为1, 2,……直到N,N号牌在牌库底.为了发完所 ...
- EXCRT
是个好东西,可以处理在模数不互质的同余方程组 核心就是用扩欧来合并方程 如果我们有两个形如\(x\equiv b_1(mod\ a_1)\) \(x\equiv b_2(mod\ a_2)\)的方程我 ...
- 一、安装 IntelliJ IDEA
首先,双击打开 IntelliJ IDEA 的快捷方式: 在此,需要说明: 如果咱们的电脑曾经安装过 IntelliJ IDEA,并且你在卸载 IntelliJ IDEA 的时候没有删除其配置文件目录 ...
- sqlite简单笔记
五种约束需要注意的地方 1.自增使用:autoincrement 2.约束必须进行后面处理:unique(字段[多个可以以逗号分开]) 3.外键必须放后面:foreign key(字段引用) refe ...
- 让IIS支持无后缀名访问
IIS中添加对Mime类型 . application/octet-stream
- Angularjs实例1
<!DOCTYPE html><html><head><meta http-equiv="Content-Type" content=&q ...
- session和cookie的介绍
1.将cookie,session之前,还是先说说http协议 http协议是基于TCP/UDP之上的应用层一个标准 请求,响应的模式.是你必须先请求到一个服务端之后,服务端才会响应到你.他是不会无缘 ...