我正在学习Spring AOP,我看到了这个表中Spring AOP和AspectJ之间的差异。
Joinpoint Spring AOP Supported AspectJ Supported
Method Call No Yes
Method Execution Yes Yes
方法调用和方法执行之间有什么区别?
有不同类型的连接点:
- 方法调用
- 方法执行
- 对象创建
- 构造函数执行
- 字段引用
Spring AOP只支持公共方法调用,对于其他方法,您需要AspectJ。方法调用(方法调用(允许您在调用期间但在实际执行之前将其作为目标。因此,不能将连接点放在正在执行的方法的中间——只能在SpringAOP中的之前、之后或周围。
AspectJ允许更多的可能性,但也被视为更复杂,但由于编译时编织(Spring AOP是运行时(,它在性能方面更高效。因此,如果您需要更多的功能/更好的性能,那么使用AspectJ会更好,但这种情况很少发生,因为Spring AOP在大多数情况下已经足够了。
如果您想了解更多信息,这里有一个关于SpringAOP的概述。https://javamondays.com/spring-aop-beginners-guide/