对 Spring AOP 的理解

AOP(Aspect Oriented Programming)即面向切面编程。使用 AOP 可以很好的将业务代码与其他公共部分分隔出来,可以很好的达到解耦的需要。

切面(aspect):指关注点模块化。事务管理是企业级 Java 应用中有关横切关注点的例子,在 Spring AOP 中,切面可以使用通用类基于模式的方式(schema-based approach)或者在普通类中以 @Aspect 注解来实现。

连接点(Jion Point):在程序执行过程中某个特定的点,例如某个方法调用的时间点或者处理异常的时间点。在 Spring AOP 中,一个连接点总是代表一个方法的执行。

通知(Advice):在切面的某个特定的连接点上执行的动作。通知有多种类型,包括 around、after、before 等。许多 AOP 框架,包括 Spring 在内,都是以拦截器做通知模型的,并维护着一个以连接点为中心的拦截器链。

切点(Pointcut):匹配连接点的断言。通知和切点表达式相关联,并在满足这个切点的连接上运行。切点表达式如何和连接点匹配是 AOP 的核心:Spring 默认使用 AspectJ 切点语义。

引入(Introduction):声明额外的方法或者某个类型的字段。Spring 允许接入新的接口到任何被通知的对象上。

目标对象(Target Object):被一个或者多个切面所通知的对象,也别称作被通知对象。

AOP 代理(AOP Proxy):AOP 框架创建的对象,用来实现切面契约,在 Spring 中,AOP 代理可以是 JDK 动态代理或 从GLIB 代理。

织入(Weaving):把切面连接到其他的应用程序类型或者对象上,并创建一个被通知对象的过程。这个过程可以在编译时、类加载时或运行时完成。Spring 和其他纯 Java AOP 框架一样,是在运行时完成织入的。

任何一个系统都是由不同的组件组成的,每个组件负责一块特定的功能,比如说日志组件、权限组件等与业务无关的组件,这些核心服务组件经常会融入到具体的业务逻辑中,如果我们为每个具体的业务逻辑都添加这样的代码,比如说为每一个接口添加日志来记录接口请求记录,这样的化就会造成大量的代码冗余,因此我们需要将这些公共的代码逻辑抽象出来形成一个切面,然后注入到目标对象,也就是具体业务方法中去。AOP 正是基于这样一个思路实现的,通过动态代理的方式,将需要注入切面的对象进行代理,在进行调用的时候将公共的逻辑直接添加进去,而不需要修改原有业务的逻辑代码块,只需要在原有业务的逻辑基础之上做一些配置或一些增强功能即可。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值