Spring之AOP

AOP(Aspect Orient Programming):面向切面编程。是OOP(面向对象编程)的一个补充,这两个并不矛盾。面向切面编程思想就是在程序运行时,动态的将代码切入到类的指定方法、指定位置上。可以利用AOP处理一些非业务代码,如加入事务、日志、权限和异常等。将业务代码和非业务代码分离开。

AOP的优点:
• 降低代码耦合性
• 提高代码复用性


spring底层就是采用动态代理模式实现AOP的。采用了两种代理:
• JDK 的动态代理,如果被代理了实现了接口,会默认使用jdk的动态代理。底层通过反射方式创建代理类的对象
• CGLIB的动态代理,如果类没有实现接口,会使用CGLIB动态代理。底层是对代理类生成的class文件加载进来,通过修改其字节码生成子类来创建代理对象
spring之所以会引入这两种方式是因为其各有优缺点,
从性能上讲,使用字节码处理的CGLIB要比使用反射的JDK动态代理好。
从耦合度上讲,jdk要好于额外需要依赖字节码处理框架ASM的CGLIB。

 

 

 

Spring实现AOP的两种方式:

AOP这种思想,很多思想都对其进行实现。AspectJ也是其中一个框架,而且AspectJ对AOP实现的还比较好,Spring就把AspectJ集成了。spring本身也实现了AOP,只不过没AspectJ方便。所以在Spring中用到AOP时,一般使用AspectJ的实现方式。

• 基于xml 实现AOP
• 基于注解实现AOP

posted @ 2020-10-29 20:58  晚安1024  阅读(112)  评论(0)    收藏  举报