小伙伴们今天是平安夜-明天就是圣诞节! 你们都有许愿吗?
反正小编是许愿了,希望大家快快乐乐 ,平平安安


我们前面共享了 spring 完成 AOP 的办法,看着有那么一丢丢的麻烦,今日我们来了解一个完成方式简略,用起来更便利的结构叫做 AspectJ。

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的自动署理

测验类的话和上面一样,就是把加载的配置文件换一下。

好的今日的共享就到这里
怎么样我写理解了吗?
给大家共享一个结构

好开心!

再见了
拜拜