Spring AOP和AspectJ

AOP :Aspect Oriented Programming,即面向切面编程

是一种编程思想,是OOP(面相对象编程)的一个补充,实现对一类功能的集中处理,而不是在每个需要处理的地方进行直接的方法调用,常用于实现一些业务无关的功能(如事务控制、日志记录、安全控制、数据统计、异常处理等)

 

Spring AOP:

依赖于Spring框架,基于代理实现的,只能用于bean。 

在Spring启动时,使用动态代理,将切面逻辑织入到目标对象的方法调用中

只支持方法级别的连接点,只能拦截方法调用

提供Before、After、AfterReturning、AfterThrowing和Around等通知类型

通过Spring容器来管理和配置切面、切入点和通知,可以基于注解和XML配置的方法来进行配置

对于复杂的切面和大规模的应用,性能略低,因为是在运行时进行的动态代理

 

AspectJ AOP:

是一个独立的框架,不依赖于Spring,既可以在编译时、也可以在运行时进行切面逻辑的织入,并提供了更细粒度的切入点选择

需要使用特定的编译器(ajc),或者在运行时通过AspectJ的织入器来进行织入

支持更多的连接点,包括方法调用、方法执行、字段访问、异常处理等

提供Before、After、AfterReturning、AfterThrowing和Around等通知类型

支持引入(Introduction)和动态切面等功能

性能高效,可以在编译时进行织入,较少了运行时的开销

posted @ 2024-04-23 14:29  坏男银  阅读(9)  评论(0编辑  收藏  举报