从Spring-core-5.1.9.RELEASE.jar中分析Spring的IoC和AOP技术实现依赖。

从下图中可以看到有三个第三方lib被repack到spring-core中来,分别是asm, cglib,和 objenesis. asm主要用在支持aspectJ的AOP,cglib主要用来实现的类的动态代理,从而进一步实现AOP,objenesis用来类的实例化。

 

IoC的实现主要靠java的反射机制来实现,结合了Annotation和XML来定义Bean, objenesis这个lib也被repack到spring-core中来,用在实例化。这个objenesis包中有一个SpringObjenesis的实现。SpringObjenesis又被用在了Ioc和AOP中:ConfigurationClassEnhancer和ObjenesisCglibAopProxy中都有使用。

下面的属性决定是否使用SpringObjenesis

spring.objenesis.ignore

发表评论