Spring的AOP

AOP,全称Aspect—Oriented Programming,面向切面编程。
他是一种称为“横切”的技术,剖解封装对象的内部,并将那些影响多个类的公共行为封装进一个可复用模块(Aspect),即切面,简单来讲,就是将那些与业务无关但是却需要被业务模块调用的逻辑封装起来,减少重复代码,降低耦合度(遵循高内聚,低耦合原则),有利于后续的操作和维护。
AOP代表的是一个横向的关系,如果说“对象”是一个空心的圆柱体,其中封装的是对象的属性和行为;那么面向切面编程的方法,就仿佛一把刀,将这些空心圆柱体剖开,以获得其内部的消息。而剖开的面,也就是所谓的“切面”了。然后它又以巧夺天功的妙手将这些剖开的切面复原,不留痕迹。
AOP把软件系统分为两个部分:核心关注点和横切关注点。业务处理的主要流程是核心关注点,与之关系不大的部分是横切关注点。横切关注点的一个特点是,他们经常发生在核心关注点的多处,而各处都基本相似。比如权限认证、日志、事务处理。Aop 的作用在于分离系统中的各种关注点,将核心关注点和横切关注点分离开来。

使用范围:
Transactions 事务
Synchronization 同步
Persistence  持久化
Resource pooling 资源池
等等……

配置:
A、配置可以通过xml文件来进行,大概有四种方式:
B、配置ProxyFactoryBean,显式地设置advisors, advice, target等
C、配置AutoProxyCreator,这种方式下,还是如以前一样使用定义的bean,但是从容器中获得的其实已经是代理对象
D、通过<aop:config>来配置
E、通过<aop: aspectj-autoproxy>来配置,使用AspectJ的注解来标识通知及切入点

使用见下一篇

    原文作者:johnturingwu
    原文地址: https://segmentfault.com/a/1190000008356166
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞