Spring 源码学习 1 IOC理论

Ioc名词解释

  • Ioc全称 Inversion of Control,翻译为 “控制反转”,它还有一个别名为 DI(Dependency Injection),即依赖注入。
  • 所谓 IoC ,就是由 Spring IoC 容器来负责对象的生命周期和对象之间的关系

如何理解“控制反转”

  • 谁控制谁:在传统的开发模式下,咱们都是采用直接 new 一个对象的方式来建立对象,也就是说你依赖的对象直接由你本身控制,可是有了 IoC 容器后,则直接由 IoC 容器来控制。因此“谁控制谁”,固然是 IoC 容器控制对象
  • 控制什么:控制对象。
  • 为什么是反转:没有 IoC 的时候咱们都是在本身对象中主动去建立被依赖的对象,这是正转。可是有了 IoC 后,所依赖的对象直接由 IoC 容器建立后注入到被注入的对象中,依赖的对象由原来的主动获取变成被动接受,因此是反转。
  • 哪些方面反转了:所依赖对象的获取被反转了。

1 注入方式

  • 构造器注入
YoungMan(BeautifulGirl beautifulGirl) {
    this.beautifulGirl = beautifulGirl;
}
复制代码
  • setter 方法注入
public class YoungMan {

    private BeautifulGirl beautifulGirl;

    public void setBeautifulGirl(BeautifulGirl beautifulGirl) {
        this.beautifulGirl = beautifulGirl;
    }

}
复制代码

2 各个组件

图片摘自( singleant.iteye.com/blog/117735…)

  • Resource 体系. org.springframework.core.io.Resource,对资源的抽象。它的每个实现类都表明了一种资源的访问策略,如 ClassPathResource、URLResource、FileSystemResource 等。 spring

  • ResourceLoader 体系. 有了资源,就应该有资源加载,Spring 利用 org.springframework.core.io.ResourceLoader 来进行统一资源加载 bash

  • BeanFactory 体系 org.springframework.beans.factory.BeanFactory,是一个很是纯粹的 bean 容器,它是 IoC 必备的数据结构,其中 BeanDefinition 是它的基本结构。BeanFactory 内部维护着一个BeanDefinition map ,并可根据 BeanDefinition 的描述进行 bean 的建立和管理 数据结构

  • BeanDefinition 体系 org.springframework.beans.factory.config.BeanDefinition ,用来描述 Spring 中的 Bean 对象 ui

  • BeanDefinitionReader 体系 org.springframework.beans.factory.support.BeanDefinitionReader 的做用是读取 Spring 的配置文件的内容,并将其转换成 Ioc 容器内部的数据结构 :BeanDefinition 。 this

  • ApplicationContext 体系 org.springframework.context.ApplicationContext ,这个就是大名鼎鼎的 Spring 容器,它叫作应用上下文,与咱们应用息息相关。它继承 BeanFactory ,因此它是 BeanFactory 的扩展升级版,若是BeanFactory 是屌丝的话,那么 ApplicationContext 则是名副其实的高富帅。因为 ApplicationContext 的结构就决定了它与 BeanFactory 的不一样,其主要区别有:spa

    • 继承 org.springframework.context.MessageSource 接口,提供国际化的标准访问策略。
    • 继承 org.springframework.context.ApplicationEventPublisher 接口,提供强大的事件机制。
    • 扩展 ResourceLoader ,能够用来加载多种 Resource ,能够灵活访问不一样的资源。
    • 对 Web 应用的支持。

注:本文摘自芋道源码 博客翻译

相关文章
相关标签/搜索