2.1、IOC思想
2.1.1、传统方式获取资源
组件主动地从容器中获取所需要的资源,在这样的模式下开发人员往往需要知道在具体容器中特定资源的获取方式;
提高了学习成本,同时也降低了开发的效率。
2.1.2、控制反转方式获取资源
由容器主动地将资源推送给需要的组件,开发人员不需要知道容器是如何创建资源对象的,只需要提供接收资源的方式即可;
极大地降低了学习成本,提高了开发的效率。
2.1.3、DI
DI(Dependency Injection):依赖注入,即组件以一些预先定义好的方式(例如:setter 方法)接受来自于容器的资源注入。
IOC(Inversion of Control) 是一种控制反转的思想, 而 DI 是对 IOC 的一种具体实现。
2.2、IOC容器的实现
Spring 的 IOC 容器就是 IOC 思想的一个落地的产品实现。
IOC 容器管理的组件也叫做 bean,在创建bean 之前,首先需要创建 IOC 容器。
Spring 提供了 IOC 容器的两种实现方式:BeanFactory 和 ApplicationContext
2.2.1、BeanFactory
这是 IOC 容器的基本实现,是 Spring 内部使用的接口;
面向 Spring 本身,不提供给开发人员使用。
2.2.2、ApplicationContext
ApplicationContext 是 BeanFactory 的子接口,提供了更多高级特性;
面向 Spring 的使用者,几乎所有场合都使用 ApplicationContext 而不是底层的 BeanFactory。
2.2.2.1、ApplicationContext的主要实现类
类型名 | 简介 |
---|---|
ClassPathXmlApplicationContext | 通过读取类路径下的 XML 配置文件来创建 IOC 容器对象(常用) |
FileSystemXmlApplicationContext | 通过读取文件系统路径下的 XML 配置文件来创建 IOC 容器对象(少用) |
ConfigurableApplicationContext | ApplicationContext 的子接口,包含一些扩展方法refresh() 和 close() ,让 ApplicationContext 具有启动、关闭和刷新上下文的能力 |
WebApplicationContext | 专门为 Web 应用准备,基于 Web 环境创建 IOC 容器对象,并将对象引入存入 ServletContext 域中 |
本文来自博客园,作者:Javaer1995,转载请注明原文链接:https://www.cnblogs.com/Javaer1995/p/17569844.html
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/194540.html