Spring AOP:使用Spring AOP进行切面编程的实例,解释不同类型的advice(advice类型)以及何时使用它们
I. Spring AOP 简介
AOP的含义和用途:
AOP,全称Aspect Oriented Programming,即面向切面编程,是一种编程范式,与面向对象编程(OOP)并列。AOP是一种处理程序中横切关注点的技术,这些横切关注点包括日志记录,安全控制,缓存,事务管理等。
AOP提供了在软件组件的行为间切割关注点的能力,这种切割从概念上增加了模块化。通过AOP,我们可以将这些横切关注点抽象化,并模块化为单独的功能,从而降低了代码重复和提高了代码的可维护性。也便于我们在不影响主要功能代码的基础上增加或删除一些功能。
Spring中的AOP概念:
在Spring中,AOP是通过定义切面实现的。切面(Aspect)是用于实现横切关注点的模块,其内部封装了一些通知(Advice)和切点(Pointcut)。
- Advice(通知):是切面的一部分,是切面必须完成的工作,例如,在方法调用前后打印日志。
- Pointcut(切点):是切面应用于何处的定义,例如,我们可以定义一个切点来匹配所有具有特定注解的方法。
Spring提供了五种类型的Advice:
- Before advice:在某连接点(对应于JointPoint)之前执行的Advice
- After returning advice:在某连接点正常完成之后执行的Advice
- After throwing advice:在方法抛出异常之后执行的Advice
- After (finally) advice:无论一个连接点退出的方式如何,都要执行的advice
- Around advice:围绕一个连接点执行的advice,可以在方法调用前后自定义一些操作。
Spring AOP支持AspectJ注解,并提供了对AspectJ Pointcut表达式语言的支持,使得我们可以通过表达式更灵活地定义切点。
II. Spring AOP的核心组件
Aspect(切面)