AspectJ 框架,比用 spring 实现 AOP 好用很多哟!

好的各位小伙伴

有对象的

抓紧去准备礼物

有表白对象的

抓紧去准备表白

剩下的准备好

我们来分享知识了

我们前面分享了 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的自动代理



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



好的今天的分享就到这里

怎么样我写明白了吗?


给大家分享一个框架

好开心!

再见了

拜拜

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 89,046评论 13 123
  • 本章内容: 面向切面编程的基本原理 通过POJO创建切面 使用@AspectJ注解 为AspectJ切面注入依赖 ...
    谢随安阅读 1,472评论 0 8
  • 上篇我们介绍了Spring中有关高级依赖关系配置的内容,也可以调用任意方法的返回值作为属性注入的值,它解决了Spr...
    Single_YAM阅读 251评论 0 6
  • AOP 什么是AOP 在软件业,AOP为Aspect Oriented Programming的缩写,意为:面向切...
    持续进步者阅读 149评论 1 3
  • **** AOP 面向切面编程 底层原理 代理!!! 今天AOP课程1、 Spring 传统 AOP2、 Spri...
    luweicheng24阅读 393评论 0 1