由spring-aop、spring-aspects 和spring-instrument 3 个模块组成。
spring-aop 是Spring 的另一个核心模块,是AOP 主要的实现模块。作为继OOP 后,对程序员影响最大的编程思想之一,AOP 极大地开拓了人们对于编程的思路。在Spring 中,他是以JVM 的动态代理技术为基础,然后设计出了一系列的AOP 横切实现,比如前置通知、返回通知、异常通知等,同时,Pointcut 接口来匹配切入点,可以使用现有的切入点来设计横切面,也可以扩展相关方法根据需求进行切入。
spring-aspects 模块集成自AspectJ 框架,主要是为Spring AOP 提供多种AOP 实现方法。
spring-instrument 模块是基于JAVA SE 中的"java.lang.instrument"进行设计的,应该算是AOP的一个支援模块,主要作用是在JVM 启用时,生成一个代理类,程序员通过代理类在运行时修改类的字节,从而改变一个类的功能,实现AOP 的功能。在分类里,我把他分在了AOP 模块下,在Spring 官方文档里对这个地方也有点含糊不清,这里是纯个人观点。