好的各位小伙伴
有对象的
抓紧去准备礼物
有表白对象的
抓紧去准备表白
剩下的准备好
我们来分享知识了
我们前面分享了 spring 实现 AOP 的方法,看着有那么一丢丢的麻烦,今天我们来了解一个实现方式简单,用起来更方便的框架叫做 AspectJ。
AspectJ 是什么
AspectJ 是一个面向切面的框架,他定义了 AOP 的一些语法,有一个专门的字节码生成器来生成遵守 java 规范的 class 文件。
AspectJ 的通知类型不仅包括我们之前了解过的四种通知:前置通知、后置通知、环绕通知和异常通知,而且还多出一种最终通知即无论程序是否正常执行,最终通知的代码会得到执行。
为什么说 AspectJ 更为简单,更加方便呢?
原因就是切入点表达式,切入点表达式可以标识切面织入到哪些类的那些方法当中,就不需要像我们之前利用 spring 实现 AOP 那样各种配置。只要把切面的实现配置好了,再把这个切入点表达式写好就可以了。
语法格式如下:
execution(
modifiers-pattern?
//访问权限匹配 如public、protected
ret-type-pattern
//返回值类型匹配
declaring-type-pattern?
//全限定性类名
name-pattern(param-pattern)
//方法名(参数名)
throws-pattern?
//抛出异常类型
)
注意:中间以空格隔开,有问号的属性表示可以省略。
特殊符号
a: * 代表0到多个任意字符
b: .. 放在方法参数中 ,代表任意个参数 ,放在包名后面表示当前包及其所有子包路径
c: + 放在类名后,表示当前类及其子类,放在接口后,表示当前接口及其实现类
例如:
a:execution(public * *(..))
表示任意的 public 方法
b:execution(* set *(..))
表示任意包含以 set 字符开头的方法
c:execution(* com.ln.spring.service.impl.*.*(..))
表示com.ln.spring.service.impl的任意类的任意方法
AspectJ+Spring的环境搭建
引入jar包
aopalliance-1.0.jar
spring-aop-4.2.1.RELEASE.jar
aspectjweaver-1.6.6.jar
spring-aspects-4.2.1.RELEASE.jar
引入aop的约束
xml配置方式
编写切面类,在切面类里面定义各种通知的实现方法。
在配置文件里面对 aop 进行配置
首先先注册我们的实现类和切面,之后进行 AspectJ的AOP的配置,进行一下测试
咱们就只测试一下前置通知哈,剩下的小伙伴们可以自己敲一下代码测试一下
基于注解方式
编写切面类,加上@Aspect注解,实现各种通知,在实现通知的方法上加上通知的注解以及切入点表达式的注解。
在配置文件注册切面,且加上aspectJ的自动代理
测试类的话和上面一样,就是把加载的配置文件换一下。
好的今天的分享就到这里
怎么样我写明白了吗?
给大家分享一个框架
好开心!
再见了
拜拜