Spring基本用法7——AOP的支持(一)
前言:AOP,也就是面向切面编程,作为面向切面编程的一种补充,已经比较成熟,如果是OOP是从静态角度考虑程序结构,那么AOP则是从动态角度考虑程序运行。本文旨在介绍Spring对AOP的支持,简述其用法。
本篇文章重点关注以下问题:
- AOP的使用场景
- AOP的基本概念
- Spring对AOP的支持
1. AOP的使用场景
AOP 广泛应用于处理一些具有横切性质的系统级服务,何为横切性质?可以把它理解为各业务流程共有的模块,如下图所示:
日志服务、安全服务就属于横切性质的系统级服务,此服务为各业务流程都需要的服务。常规以OOP方式讲,需要实现上图的功能,各业务流程需要三段完全相似的方法段,如下图所示:
很明显,此方法较low,若果哪天需要切换安全策略,或是修改日志记录细节,就需要维护多处代码(成千上百处),这是非常令人沮丧的事。AOP就是为弥补OOP处理这些问题而生的,如下图所示:
通过抽象分析出各模块、各方法的交叉关注点,将其抽离出来在一处处理,这种方式无疑非常优雅,维护起来也很方便。
2. AOP基本概念
AOP从程序运行角度考虑程序的流程,提取业务处理过程的切面。Aop面向的是程序运行中的各个步骤,希望以更好的方式来组合业务处理的各个步骤。先来简单介绍下关于面向切面编程的一些术语:
- 切面(Aspect):切面用于组织多个Advice,Advice放在切面中定义;
- 连接点(Joinpoint):程序执行过程中明确的点,如方法的调用,或异常的抛出。在SpringAOP中,连接点总是方法的调用;
- 增强处理(Advice):AOP框架在特定的切入点执行的增强处理。如“around”、“before”等
- 切入点(Pointcut):可以插入增加处理的连接点。简言之,当某个连接点满足指定要求时,该连接点将被添加增强处理,该连接点也就变成了切入点。
- 引入:将方法或字段添加到被处理的类中。(比如,可以使用一个引入,是任何对象实现isModified接口)
- 目标对象:被AOP框架进行增强处理的对象,也被称为被增强对象。
- AOP代理:AOP框架创建的对象,简单的说,代理就是对目标对象的加强。
- 织入(Weaving):将增强处理添加到目标对象中,并创建一个被增强的对象(AOP代理)的过程。
相关推荐
也许不会看见 2020-07-08
HappyHeng 2020-06-25
也许不会看见 2020-06-28
zhongliwen 2020-05-11
也许不会看见 2020-05-04
方志朋 2020-05-01
横云断岭 2020-04-17
Justagreenonion 2020-03-07
容数据服务集结号 2020-02-20
itjavashuai 2020-02-14
smalllove 2020-02-14
haidaoxianzi 2020-01-12
neweastsun 2019-12-29
咻pur慢 2019-12-25
neweastsun 2019-11-09
Julywhj 2019-11-06
lttXiangFangJia 2019-06-02
justlike 2020-09-02