从一个面试题开始:
你自己实现IOC容器的话,保存bean你会使用什么数据结构来保存呢?
现在的很多开发人员(甚至3年以上的)不一定能回答这问题,为什么会这样呢?
这个跟现在springboot现在已经高度成熟了,很多配置文件都已经没有了,改用了注解方式,这样一来,很多研发人员很难从原理上深入理解这个问题。所以这个系列课程我,没有从springboot开始,而是选择springmvc。
先从目前实际用springmvc开发时采用注解的方式开始,这个也是springmvc开发的主要方式。
然后采用xml方式的springmvc【现在用的比较少了,除非是以前遗留的系统】,实现同样功能的时候,需要配置哪些xml配置文件。进而切换到我们如何自己实现springioc容器的主题上来。
如果想弄明白ioc容器的原理,我们可以从如何存储bean来开始。然后通过分析springioc原理的讲解,加上自己实现的简单IOC容器的方式,加深大家对于ioc容器的理解。
SpringMvc demo解析(基于注解):
目前主流的springmvc开发方式,基于注解,自动配置依赖,只需要写业务代码
SpringMvc demo解析(基于XML):
这种形式,你是需要配置请求对应哪个Controller ID,这个controller id对应了哪个类,这个类有哪些属性,都是需要通过xml告诉spring ioc容器的。
SpringIOC原理
控制反转与依赖注入。
类的属性分为:基本属性、其他类。
在IOC容器出来之前,我们需要使用一个bean的时候,需要先new一个这种类的bean出来,然后设置这个bean的属性,设置完之后,才能使用。【查看示例代码】
有了Sporingioc之后,springioc可以依据xml配置文件或者注解的方式来自动的装配这些类。我们在使用的时候,只需要从ioc容器里面根据bean的 ID 或者 name把bean取出来就可以直接使用。【查看示例代码】
也就是说,bean的这个装配或者实例化的过程由ioc容器帮我们实现了,控制权由我们自己控制变成了有IOC容器来控制。 所以IOC容器其实是一种控制反转的思想。
自己实现简单的SpringIOC