Spring实战(4)-AOP

AOP概述

AOP是一种编程思想。称为:面向切面编程。是对OOP的一种补充。

举个例子解释这种编程思想:

一个饭店的服务员,在接待每个新客人的时候,我们假如它都进行三个操作:接客-->服务-->送客。那么在oop编程中,如果接待了一百个客人,那么就需要写一百次这三个操作。

而我们发现,其中接客和送客这两个环节,对不同的客户是相同的操作,不同的客户只有服务的内容不同。那么我们把接客和送客抽离出来,不必要写一百次重复的操作。

然后我们把接客和送客这两个操作切面放到到服务的前后,这就是AOP的基本思想。


AOP基本术语

增强(Advice):织入到目标类连接点上的一段程序代码。(就是上面的接客和送客)

切点(Pointcut):通过切点定位特定的连接点。(可以把上面的服务作为切点,把接客和送客放到切点的前后)

织入(Weaving:将增强添加对目标类具体连接点上的过程。

切面(Aspect):由切点和增强组成,既包括横切逻辑的定义,也包括了连接点的定义。

 


AspectJ

AspectJ是一个面向切面的框架,它扩展了Java语言(jdk5以上)。

AspectJ和Spring AOP 是AOP的两种实现方案,这一点要搞清楚。

Spring aop是aop实现方案的一种,它支持在运行期基于动态代理的方式将aspect织入目标代码中来实现aop。但是spring aop的切入点支持有限,而且对于static方法和final方法都无法支持aop(因为此类方法无法生成代理类);另外spring aop只支持对于ioc容器管理的bean,其他的普通java类无法支持aop。现在的spring整合了aspectj,在spring体系中可以使用aspectj语法来实现aop。

所以现在常用AspectJ来实现AOP。

使用方式:

 

猜你喜欢

转载自blog.csdn.net/qq_42666483/article/details/83059614
今日推荐