一、什么是AOP
- 作为Spring框架的关键组件
- 关注点: 面向切面需要将逻辑程序分解的部分。
- 横切关注点: 横跨应用程序多个点的功能,概念上独立于业务逻辑,例如日志,审计,声明式事务,安全性和缓存等。
二、AOP术语
- Aspect: 一个模块具有一组提供横切需求的API。例如一个日志模块提供日志记录API,AOP进行调用。
- Join point: 称为切入点,即在那个切面使用AOP框架。
- Advice: AOP调用方法前后的处理器。
- Pointcut: 一组连接点通知被执行,可以使用表达式或模式指定切入点。
- Introduction: 引用允许添加新方法或属性到现有的类中。
- Target object: 指定通知对象。
- Weaving: 将切面连接到其它应用程序类型或者对象上,并创建通知对象。它在编译,类加载,运行过程中完成。
三、通知类型
- 前置通知: 在方法执行前的通知
- 后置通知: 在方法执行后的通知
- 返回通知: 在方法执行完成时通知
- 异常通知: 在方法退出抛出异常时通知
- 环绕通知: 在方法执行前后的通知,相当于前置与后置通知同时使用
四、自定义切面
1、基于AOP的XML架构
准备工作:
- XML文件中使用aop空间命名标签
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-3.0.xsd
http://www.springframework.org/schema/context
https://www.springframework.org/schema/context/spring-context.xsd"
>
</beans>
- 加载AspectJ库文件
需要的jar包有:
- aspectjrt.jar
- aspectjweaver.jar
- aspectj.jar
- aopalliance.jar
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-aop</artifactId>
<version>5.3.23</version>
</dependency>
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjweaver