Spring源码–AOP和IOC

通常情况下 ,一聊到spring 基本就会提到aop和ioc。网上对于这两个核心内容已经讲的很多了,有点烂大街了,多数都从理论上去阐述aop是什么样的,ioc是什么样的。但是真正从代码来看,aop和ioc其实是不在量级上的 ,可以这么说,aop是实现ioc的过程中,一块小关键点的实现,在后面的代码中会拆解ioc的实现过程,从代码过程中可以体会到这个部分内容。

核心内容

IOC

首先需要理解到底什么是ioc?

网上有很多玄乎的答案,其实他真正在做的事情就是 “通过spring获取一个bean的过程” 。我想最能表现ioc的就是写段代码,如下:

ApplicationContext applicationContext= new ClassPathXmlApplicationContext("x.xml");
B b=applicationContext.getBean(B.class);

在这两行代码里,包含在这spring最核心的内容,比如说 bean是如何生成的以及bean的生命周期是什么样子的?在bean生成后是如何存储的?在存储的问题上就会出现循环依赖,那就引出循环依赖是如何解决的?接下来就是如何获取使用的bean?等等内容,后面都给出答案。

AOP

下面这个图就很生动形象的表达出什么是aop,有个代理类把目标包住,每次执行目标,需要先通过代理类。

2.spring源码--AOP和IOC_AOP

总结

上面的aop和和ioc是我对他们的理解,没有网上的玄而又玄,这个应该是比较好理解的。后面开始拆解ioc相关内容。