博客
关于我
对Spring aop的理解
阅读量:460 次
发布时间:2019-03-06

本文共 1239 字,大约阅读时间需要 4 分钟。

  记得有次面试中面试官问到,跟我谈谈spring aop,当时我就闷了,当时脑海里只浮现出切入点、切面、引入、通知等等一些很模糊的概念,于是结果可想而知。所以最近用下心来为自己做下记录方便以后查看(为以后的面试做好准备,呵呵),如果以下有什么疏忽的地方或者写的不好的地方,还请发现者多多指导。

  什么是AOP

  AOP(Aspect-OrientedProgramming),也就是面向切面编程。也可以这样理解,学java的应该都知道面向对象编程(oop),而OOP是从静态解读考虑程序结构,但AOP是从动态角度考虑程序运行过程。也可以说AOP是OOP的补充和完善。OOP引入了封装、继承和多态性等概念来建立一种对象层次结构, 用以模拟公共的一个集合。当我们需要为分散的对象引入公共行为的时候,则OOP显得无能为力了。也就是说,OOP允许你定义从上到下的关系,但并不适合从左到右的关系,例如日志功能。日志代码往往水平的散步在所有对象层次中,而与它所散步到的对象的核心功能毫无关系。对于其他类型的代码,如安全性、异常处理和透明的持续性也是如此。这种散布在各处的无关的代码被称为横切代码,在oop设计中,他导致了大量代码的重复,而不利于各个模块的重用。

  而AOP技术则恰恰相反,它利用一种称为“横切”的技术,剖解开封装的对象内部,并将哪些影响了多个类的公共行为封装到一个可重用模块,并将其名为'Aspect',及方面。 所谓"方面",简单的来说就是将那些与业务无关,却为业务模块所共同调用的逻辑或责任封装起来。便于减少系统的重复代码,降低模块间的耦合度等。

  实现AOP的技术,主要分为两大类:一是采用动态代理技术,利用截取信息的方式,对该信息进行装饰,以取代鱼油对象行为的执行;二是采用静态织入的方式,引入特定的语法创建“方面”,从而使得编译器可以在编译期间织入有关“方面”的代码。

AOP的相关概念

  方面:一个关注点的模块化,这个关注点实现可能另外横切多个对象。事物管理是J2EE应用中一个很好的很横切关注点例子。

  连接点:程序执行过程中明确的点,如方法的调用或特定的异常被抛出。

  通知:在特定的连接点上AOP框架执行的动作。Spring中定义了四个advice: BeforeAdvice, AfterAdvice, ThrowAdvice和DynamicIntroductionAdvice

  切入点:指定一个通知将被引发的一系列连接点的集合。

  引入:添加方法或字段到被通知的类。

  目标对象:含连接点的对象。pojo

  AOP代理(AOP Proxy): AOP框架创建的对象,包含通知。

  织入(Weaving): 组装方面来创建一个被通知对象。

AOP配置

  这个可以参考其他地方的写法,这里就不多叙述了。

 

参考文章地址:http://blog.csdn.net/moreevan/article/details/11977115

 

你可能感兴趣的文章
联赛模拟测试23 D. 真相 思维题
查看>>
SSISDB2:SSIS工程的操作实例
查看>>
业务工作流平台设计(八)
查看>>
解决:angularjs radio默认选中失效问题
查看>>
windows环境下安装zookeeper(仅本地使用)
查看>>
Docker学习(十三)- docker rm 命令详解
查看>>
微信小程序setData子元素
查看>>
缓冲区溢出实例(一)--Windows
查看>>
Badboy录制脚本时,提示脚本错误的解决方法
查看>>
PHP一句话木马小总结与SQL语句写一句话木马
查看>>
关于计数排序
查看>>
Python中字符串前添加r ,b, u, f前缀的含义
查看>>
Hadoop学习笔记—Yarn
查看>>
__format__
查看>>
191123
查看>>
JSONPath小试牛刀之Snack3
查看>>
Solon Ioc 的注解对比Spring及JSR330
查看>>
Java基础:HashMap中putAll方法的疑惑
查看>>
[转] C++中的namespace
查看>>
解决git push出现error: failed to push some refs to 错误
查看>>