Spring的底层ioc实现原理

Spring的底层ioc实现原理

学了这么久的java,对IOC一直是只闻其名,不见其理,一直以为ioc是一种功能的实现,看了这么多博客,才理解IOC只是一种模式,一种思想,他没有固定的使用方法,spring的底层大量使用了ioc的思想.ioc是控制反转.简单说就是将原先需要new出来的对象,我先把它实例化,同时把它放到一个容器里,这样后面需要这个对象的时候,直接通过注入的方式拿到,为什么说是注入,其实应该说是从容器里面拿,只不过在spring里,用的更多的是注入, spring中使用ioc的模式,首先,在spring中有两个map集合,有人说一个是用来存放bean的配置信息,一个用来存放bean的实例,另一个是用来存放bean的实例. Spring的底层ioc实现原理 我们在SpringBoot项目里启动主启动类后,系统根据@ConponentScan("")和@EnablleAutoConfiguratiohn这两个注解去扫描项目中@ConponentScan("")路径下的对象以及@Controller,@Service…等有这类注解的对象,随后将这些对象的信息,像Scope,Lazy,Lifecyle等的信息存入到上面一个map集合里,key就是对象的名字.value则是这些属性信息. Spring的底层ioc实现原理 再然后,根据两个上下文对象,@[email protected]t去生成bean的实例对象,并将它们存放到下面一个map中,key是对象名,value是对象实例,在图中也可以知道一个是通过注解生成实例,一个是通过xml配置信息生成实例.这里看到有人说的是有5个上下文对象,当然,这里用得比较多的就是我说的这两种. 这个时候,map里就有了对象的实例,我们需要的时候,就可以通过getBean("")方法去拿我们想要的实例对象.