Spring的AOP细节理解
什么是AOP?
AOP:是面向切面编程,是对面向对象编程(oop)的一种补充,
为什么需要AOP?
例如在我们做一个计算器,要求我们每次运行对应的功能(也就是进行运算时)都要输出日志,以便于知道程序是怎么运行的
如果在OOP中,那么肯定需要抽象出一个log(日志)类吧,然后再每个方法前调用这个new一个log(日志)类,然后调用的方法,并传入不同的参数,
第一个问题,就是代码混乱吖,就是不是核心处理的代码也出现在核心的类里面,以后维护的时候,我还要去区分这个代码是什么来的,
第二个问题:就是代码太分散,就是当以后维护的时候需求发生变化的时候,比如我输出日志的格式发生改变,以前日志是输出XXXXXXXX,我现在要求日志输出时AAAAAAAAA,
那这样我是不是要每个类的去修改?比如我又几千几万行代码,那这样耗费的时间是不是好多
如何使用AOP:(AOP的本质就是Java的一个动态代理,只是AspectJ把这个东西封装好,在Spring中可以更加的好利用)
使用AOP步骤:1创建切面,2定义通知,3实现通知
具体步骤可以参考这个http://www.cnblogs.com/jeremy-blog/p/4023743.html
AOP的术语
切面(Aspect): 有多个横切关注点组成,切面就是横切关注点被模块化后的特殊对象(原本横切关注点是分布在各个类里的,但是通过AOP被模块化到一个特殊的对象里,而这个特殊的对象就是切面,),
横切关注点: 跨越应用程序多个模块的功能(也可以说是需求,也可以说是方法)
通知(Advice): 切面必须要完成的工作(就是切面的功能(也就是切面的横切关注点,也可以说是切面里的方法))
目标(Target): 被通知的对象()
代理(Proxy): 向目标对象应用通知之后(调用切面的方法后)创建的对象(就是代理对象)
连接点(Joinpoint)(物理存在):程序执行的某个特定位置:如类某个方法调用前、调用后、方法抛出异常后等。连接点由两个信息确定:方法-》表示的程序执行点;相对点-》表示的方位(执行点的前后)。例如 执行的ArithmethicCalculator#add() 方法时,执行点为 ArithmethicCalculator#add(); 方位为该方法执行前的位置
切点(pointcut):每个类都拥有多个连接点:例如 ArithmethicCalculator 的所有方法实际上都是连接点,即连接点是程序类中客观存在的事务。AOP 通过切点定位到特定的连接点。类比:连接点相当于数据库中的记录,切点相当于查询条件。切点和连接点不是一对一的关系,一个切点匹配多个连接点,切点通过 org.springframework.aop.Pointcut 接口进行描述,它使用类和方法作为连接点的查询条件。
Spring的AOP细节理解的更多相关文章
- Spring的AOP简单理解
最近在研究spring的AOP,翻译出来的意思是面向切面. 总结如下: 所谓AOP就是将分散在各个方法处的公共代码提取到一处, 并通过类似拦截器的机制实现代码的动态整合.可以简单地想象成, 在某个方法 ...
- spring的AOP个人理解和使用
1什么是AOP:AOP是面向切面编程,也就是说面向某个功能模块编程,典型的应用就是Spring的声明式事务, Spring的AOP事务解析: 在以前的事务管理是要融合在逻辑代码中的,在逻辑代码中决定事 ...
- 关于Spring中AOP的理解
AOP简介[理解][重点] 1.AOP(Aspect Oriented Programing)面向切面/方面编程 2.AOP隶属软件工程的范畴,指导开发人员如何制作开发软件,进行结构设计 3.AOP联 ...
- Spring容器AOP的理解
一句话理解:根据被代理对象信息通过Proxy动态生成我们具体的代理类. 实现就动态代理.那动态代理是什么呢? 动态代理其实并不是什么新鲜的东西,学过设计模式的人都应该知道代理模式,代理模式就是一种静态 ...
- Spring中AOP的理解
1.AOP的概念 AOP(AspectOriented Programming,面向切面编程)指的是可以通过预编译方式和运行期动态代理实现在不修改源代码的情况下个程序动态统一添加功能的一种技术.AOP ...
- Spring里面AOP的和IOC的理解
1.Spring里面AOP的理解:https://www.cnblogs.com/hongwz/p/5764917.html例如日志功能.日志代码往往横向地散布在所有对象层次中,而与它对应的对象的核心 ...
- Spring AOP深入理解之拦截器调用
Spring AOP深入理解之拦截器调用 Spring AOP代理对象生成回想 上一篇博客中:深入理解Spring AOP之二代理对象生成介绍了Spring代理对象是怎样生成的,当中重点介绍了JDK动 ...
- Spring框架学习(9)AOP技术理解与使用
内容源自:AOP技术理解与使用 一.什么是AOP? aop技术是面向切面编程思想,作为OOP(面向对象编程)的延续思想添加到企业开发中,用于弥补OOP开发过程中的缺陷而提出的编程思想. AOP底层也是 ...
- 对于Spring中AOP,DI,IoC概念的理解
IOC IoC(inversion of Control),控制反转.就好像敏捷开发和SCRUM一样,不是什么技术,而是一种方法论,一种工程化的思想.使用IoC的思想意味着你将设计好的对象交给容器控制 ...
随机推荐
- FATFS
(一),什么是文件管理系统 答:数据在PC上是以文件的形式储存在磁盘中的.这些数据的形式一般为ASCII码或二进制形式.简单点说就是:管理磁盘上的文件的方法的代码! 如:我们写到SD卡上面的数据 ...
- iOS图片上传1
这几天在搞iphone上面一个应用的开发,里面有需要摄像头/相册编程和图片上传的问题,在这里总结一下. [部分知识] iphone中图像通常存储在4个地方[相册.应用程序包.沙盒.Internet], ...
- Nokia Imaging SDK
Nokia Imaging SDK 目前为 beta 版本,是诺基亚在自己的图像应用中使用的技术同时提供给开发者 使用.这是一个运行在手机设备上处理图片数据的高效的类库.功能包括 JEPG 图片的编码 ...
- vue 和ng的区别
vue: 读音: v-u-e view vue到底是什么? 一个mvvm框架(库).和angular类似 比较容易上手.小巧 mvc: ...
- 常用vim编辑器命令行
按ESC键 跳到命令模式,然后: :w 保存文件但不退出vi:w file 将修改另外保存到file中,不退出vi:w! 强制保存,不推出vi:wq 保存文件并退出vi:wq! 强制保存文件,并退出v ...
- (译).NET4.X并行任务Task需要释放吗?
摘要:本博文解释在.NET 4.X中的Task使用完后为什么不应该调用Dispose().并且说明.NET4.5对.NET4.0的Task对象进行的部分改进:减轻Task对WaitHandle对象的依 ...
- PHP——内测:联系人管理
要求见文件-内测:联系人管理.pdf 数据库为mycontacts 表格为contacts,groups 表格内容为: zhuye.php <!DOCTYPE html PUBLIC " ...
- 记一次安装多版本php的四个雷区,你踩着了吗
记一次安装多版本php的四个雷区,你踩着了吗 技术小疯子关注3人评论740人阅读2018-06-29 15:00:30 记一次安装多版本的php的四个雷区,你踩着了吗 需求:公司需要在同一台服 ...
- sql one
查询的话 子查询什么的都很正常 添加的话 尽量把东西都添加在一个表单里 这是源头 有个这个方便的源头 查询和删除都会方便很多 组建一个网站,不可避免的要进行调试,有些功能需要添加或者删除,对于后台来讲 ...
- CSS:scrollbar的属性及样式分类
overflow 内容溢出时的设置(设定被设定对象是否显示滚动条) overflow-x 水平方向内容溢出时的设置 overflow-y 垂直方向 ...