Spring IOC

很早就在学习Spring,但是发现很多东西没有深入挖掘,很多知识点,看过之后当时貌似懂了,但是过段时间一点都不会用了,所以打算系统学习下顺表整理出来,以备以后重新回顾。

本篇主要探讨以下问题:

一:IOC和DI到底是什么?

二:IOC能够解决什么样的问题?

三:IOC由哪些模块组成?

四:学习Spring Resource和ResourceLoader以及资源加载模式ant匹配

五:学习BeanFactory和ApplicationContext以及BeanFactory和ApplicationContext的Bean生命周期

六:Spring三种装配Bean的方式 XML、基于注解、基于JAVA类

七:Spring Bean的作用域

八:Spring IOC如何解决Bean循环依赖的问题?

九:如何实现一个Spring IOC容器?

 

一:IOC和DI到底是什么?

    其实理解了发现是个很简单的概念,可是配上这些高大上的名词,瞬间有点让人头晕。关键是理解了转化成自己的语言,下次一看,原来就是这样。先看个简单的例子(假设A接口依赖B接口):

 

// 通常做法
A {
 B b = new BImpl();
}
// Spring 做法
A {
 B b;
 public void setB(B b) {
 }
}
  第二种情况B的具体类由Spring IOC注入到方法中,这个其实咋一看和我们使用的工厂模式没有什么区别。其实区别在于这里B b是由Spring容器注入进去的,我们的方法是通过我们手动的,一个是自动的,一个是手动的。
// 我们的使用方式
main() {
   A a = new A().setB(BeanFactory.createBeanB)
}

// Spring的方式 配置好之后,运行时候自动注入Bean了,思考它是怎么做到的呢?
// 我的大致思路,启动时,Spring一个线程读取资源文件,创建Bean和依赖的Bean属性。
    我们现在应该对IOC有个大概的理解了吧,现在我们再来谈谈IOC和DI这两个概念。

    IOC(控制反转):谁控制谁,控制什么? 通常,我们的程序来控制对象的创建,但是在IOC中对象的创建是由Spring容器来控制统一创建的。

    反转:既有反转,当然亦有正转。正转的含义,程序主动的控制对象的创建。反转的含义,程序只能被动的等待Spring 容易来注入对象。

    DI(Dependency Injection):其实是在发现IOC不能很好表现初Spring容器处理的依赖关系,所以才出了依赖注入这个名词。

  

二:IOC能够解决什么样的问题?

    我觉得有一下几点吧,

    a) 降低代码的耦合性 维护的时候想切换依赖只要改改配置就好了

    b) 测试的时候很方便吧,直接接口Mock就好了,不用依赖具体的类。

 

三:IOC由哪些模块组成?


Spring IOC_第1张图片
 
 四:学习Spring Resource和ResourceLoader以及资源加载模式ant匹配

  

 

 

 

 

 

你可能感兴趣的:(Spring IOC)