AspectJ备忘

  |   0 评论   |   0 浏览

背景

在面向切面编程(Aspect Oriented Programming)的实践过程中,有两个问题:

  1. 切面与业务代码解耦:代理模式并没有解决这个问题。Spring通过IoC容器来托管所有类的创建。
  2. 织入工具:如果做到了1,那怎么将切面逻辑和业务逻辑织入到一起。

AspectJ提供了两种机制来解决上述问题:

  1. 切面语法:通过切面配置,来决定哪些类需要使用切面,不入侵业务代码。
  2. 织入工具:通过aspectjweaver,在编译期(或者类加载期),将切面代码插入到业务代码中。

切面语法

切面语法有两种,一种是基于Java注解的,另一种是基于aspect文件的。前者兼容java语法,方法使用;后者需要使用IDE插件,来进行语法检查。

AspectJ

参考

  1. 原生AspectJ用法分析以及Spring-AOP原理分析
  2. spring 如何实现原生的 aspectj 支持