一、基本概念:
AspectJ是一个面向切面的框架,它扩展了Java语言。AspectJ定义了AOP语法所以它有一个专门的编译器用来生成遵守Java字节编码规范的Class文件。
切入点表达式(用于指定切入点):execution(),里面包含:访问权限、返回值类型、权限定性类名(接口名)、方法名、抛出异常、参数列表。其中返回值类型、方法名必须要有。
二、环境搭建:
1、导包:
Spring与AspectJ整合的Jar包
AspectJ的核心Jar包
AOP联盟的Jar包
Spring对AOP实现J的ar包
以及Spring基础包
2、为配置文件添加约束:
<?xml version="1.0" encoding="UTF-8"?>
<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"
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.xsd">
<!-- bean definitions here -->
三、基于注解的AspectJ:
首先在类名前添加@Aspect标签,告诉系统这个类是个切面类。
切面注解
1、前置通知:
前置通知
任何通知都可以JoinPoint获取连接点参数。
2、后置通知:
后置通知可以获取执行结果,但不能该结果。
3、环绕通知:
4、异常通知:
如果是自定义异常对象,我们将对象名把Exception替换就行,可以有多个存在。
5、最终通知:
最终通知就是无论有无异常都会执行。
6、定义切入点:
定义切入点是为了解决代码冗余问题。
7、配置文件:
8、测试类:
9、执行结果:
四、基于XML的AspectJ:
其他不变,我们只将切面类的全部注解删掉。
配置
结果