快捷搜索: 王者荣耀 脱发

spring之aspects包、aop包和aspectj包的简单梳理

稀里糊涂的分不清这三个包的关系到底是什么,因此查了一下写篇总结。 1、aop包本身具有完整的AOP实现,但是只会使用Cglib或者JDK动态代理,在类加载时通过动态代理织入(补充一句:spring容器会在创建被代理bean时会自动创建代理bean),其使用了aspectj的部分功能 2、aspectj提供了非常完善的AOP能力,可以编译时织入、编译后织入、加载时织入,几乎能在java class的任何时刻使用织入功能;

因此可以说aspectj包是对aop包的aop功能进行支持;

spring3.0以前实现aop需要3个包:

    aopalliance-1.0.0.jar aspectj.weaver-xx.RELEASE.jar spring-aop-xx.jar spring4.0以后aopalliance并入spring-aop包,实现aop只需要2个包: aspectj.weaver-xx.RELEASE.jar spring-aop-xx.jar

SpingAOP具有一定面向切面具体实现,但在功能上弱于AspectJ,AspectJ结合aop包,则可以在IOC中使用完整的AOP功能(仅仅AspectJ是没有IOC的功能的),而Spring也提供了对AspectJ的扩展Spring-aspects.jar和 Spring-instrument.jar

经验分享 程序员 微信小程序 职场和发展