在Spring里面进行AOP操作,使用AspectJ实现。
AspectJ是什么?
AspectJ是一个面向切面的框架,它扩展了Java语言。AspectJ定义了AOP语法,所以它有一个专门的编译器用来生成遵守Java字节编码规范的Class文件。
(1)AspectJ不是Spring的一部分,和Spring配合使用
(2)Spring2.0以后增加了对AspectJ切点表达式的使用
使用AspectJ实现AOP由两种方式
1.基于AspectJ的配置文件方式
2.基于AspectJ的注解方式
AOP操作准备
1.导入jar包
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 -->
</beans>
使用表达式配置切入点
常用的表达式
execution(<访问修饰符><返回类型><方法所属类><方法名>(<参数>)<异常>)
其中红色字体的部分时不能省略的,各部分都支持通配符 “*” 来匹配全部。
比较特殊的为形参表部分,其支持两种通配符
- "*":代表一个任意类型的参数;
- “..”:代表零个或多个任意类型的参数。
例如:
()匹配一个无参方法
(..)匹配一个可接受任意数量参数和类型的方法
(*)匹配一个接受一个任意类型参数的方法
(*,Integer)匹配一个接受两个参数的方法,第一个可以为任意类型,第二个必须为Integer。
AspectJ的AOP操作
1.创建两个类
2.在xml中进行配置
3.写代码进行测试
这里比较特殊的是环绕增强,因为中间才是方法执行,这里需要用到一个参数
配置完了就行测试