https://juejin.cn/post/7322738137301090315?from=search-suggest#heading-37
Spring AOP使用纯Java实现,没有使用复杂的编译时或加载时处理。它是通过运行时代理实现的,与其他AOP框架(如AspectJ)相比,它在功能上有一些限制,但对于大多数标准企业应用来说已经足够了。
Spring AOP的关键组件包括:
- Proxy-based AOP: Spring AOP默认使用JDK动态代理或CGLIB代理为目标对象创建代理。如果目标对象实现了接口,Spring将使用JDK动态代理;如果目标对象没有实现接口,Spring将使用CGLIB库生成一个子类代理。
- AspectJ Expression Language: 用于定义切面和切点表达式。它虽然起源于AspectJ项目,但在Spring中被广泛用于定义匹配规则。
- @AspectJ support: Spring AOP提供了对AspectJ注解的支持,允许通过标准的Java注解来声明切面和通知。