Spring中AOP的实现

Spring中整合了AOP的功能,虽然有不足,没有专门做AOP框架的那么完美,但是用一用感觉还是不错的

一些概念:

AOP 面向切面编程

aspect 切面/切面类(我个人认为一个真正被解耦的程序,切面类中的功能可以切入到 任何一个目标类中 无所谓是service层或者说是dao层中的类)

joinPoint 连接点

在spring的aop中只有 类中的方法 可以做连接点,每一个方法都可以是一个连接点.

pointCut 切入点

一组连接点的集合

advice 通知/拦截器

用来控制切面类将来到底是织入到切入点的前面、后面或者是抛异常的时候。

adivsor 增强器
用来筛选类中的哪些方法是我们的连接点(哪些方法需要被拦截).

target 目标对象

proxy 代理对象

wave 织入


advice(通知)的类型:

前置通知(Before advice):
在某些连接点(join point)之前执行的通知

返回后通知(After returning advice):
在某些连接点(join point)正常完成后执行的通知(方法正常结束,没有异常)

抛出异常后通知(After throwing advice):
在某些连接点(join point)抛出异常退出时执行的通知

后通知(After (finally) advice):
当某些连接点(join point)退出的时候执行的通知

环绕通知(Around Advice):
包围一个连接点(join point)的通知,例如事务的处理,就需要这样的通知,因为事务需要在方法前开启,在方法后提交,以及方法抛出异常时候回滚

注:在spring中,连接点(join point)指的就是方法

Spring中提供了AOP的实现方式 在XMl中配置只需要三步就可以实现

1.配置目标类
2.配置拦截器(配置切面类【可选】)
3.配置代理对象

配置xml文件:

1.首先是配置目标类





2.配置拦截器

3.配置代理对象

com.briup.aop.service.IAccountServicebeforeAdvice
上一篇:如何实现一个简易版的 Spring - 如何实现 AOP(上)


下一篇:什么是 Aspect?