IOC:Inversion of control(控制反转的英文缩写),依赖对象的获得被反转了,一般是通过DI(dependency injection 依赖注入)来实现的,可以大大降低类之间的耦合度。

IOC&DI是Spring等框架的核心,或者说是基石,如果没有IOC容器&DI就没有Spring等框架。


BeanFactory和FactoryBean

beanFactory:The root interface for accessing a Spring bean container.

作为进入Spring的Bean容器的根接口,定义了Bean容器的基本功能,函数如图

其中&符号是用来取Factory的,如果对Factory产生的bean取&,则会返回产生这个bean的工厂bean。

注意区分FactoryBean和BeanFactory:

FactoryBean是生产者,生产bean

BeanFactory是一个工厂,负责bean信息的获取和管理,FactoryBean也是bean,所以也是BeanFactory管。

二者关系就像工人和工厂的关系,前者作为工人生产产品,本身也属于工厂管,而产品要出厂不是生产出来就行,还要贴标,出厂等操作,这些就是后者的工作。前面所说的&符号取的就是生产工人BeanFactory


IOC容器:通常的IOC容器由3部分组成:

  1. Resource资源,用来获取Bean的配置信息

  2. BeanFactory工厂,用来管理Bean的生产和配置

  3. BeanDefinitionReader阅读器,用来阅读Bean的配置信息和绑定BeanFactory工厂

Spring之IOC容器篇相关推荐

  1. [Spring 深度解析]第6章 Spring的IoC容器系列

    6. Spring的IoC容器系列 ​ IoC容器为开发者管理对象之间的依赖关系提供了很多便利和基础服务.有许多IoC容器供开发者选择,SpringFramework的IoC核心就是其中一个,它是开源 ...

  2. 框架:简单实现Spring的IOC容器

    学习过Spring的同学都知道,Spring框架的核心就是IoC和AOP.Spring可以理解为一个工厂,负责对象的创建和对象间关系的维护.IoC即控制反转,简单点说就是原来的对象是在要使用之前通过在 ...

  3. 【Spring】IoC容器系列的设计与实现:BeanFactory和ApplicationContext

    在Spring IoC容器的设计中,我们可以看到两个主要的容器系列,一个是实现BeanFactory接口的简单容器系列,这系列容器只实现了容器的最基本功能,另一个是ApplicationContext ...

  4. spring的IOC容器

    文章目录 1. IOC.IOC容器.Bean.DI 2. 核心概念小结 3,入门案例 3.1 IOC入门案例 3.1.1 入门案例思路分析 3.1.2 入门案例代码实现 步骤1:创建Maven项目 步 ...

  5. 在servlet(或者filter或者listener)中使用spring的IOC容器

    web.xml中的加载顺序为:listener >> filter >> servlet >> spring.其中filter的执行顺序是filter- mappi ...

  6. Spring中IOC容器

    IOC入门案例思路分析 1.管理什么(Service和Dao) 2.如何将管理的对象存放到IOC容器(配置applicationContext.xml)第二步 3.将管理的对象存放到IOC容器,如何获 ...

  7. Spring学习----IoC容器创建对象

    SpringIOC容器,是spring核心内容.功能:创建对象,处理对象的依赖关系 IOC容器创建对象: 创建对象, 有几种方式: 1) 调用无参数构造器 2) 带参数构造器 3) 工厂创建对象   ...

  8. Spring 的IOC容器系列的设计与实现:BeanFactory 和 ApplicationContext

    在Spring IOC容器的设计中,我们可以看到两个主要的容器系列,一个是实现BeanFactory接口的简单容器系列,这系列容器只实现了容器的最基本的功能,另一个是ApplicationContex ...

  9. Spring框架—IoC容器

    首先我们需要了解一下是什么是IoC.IoC是Spring的核心技术之一,全称是Inversion of Control(控制反转).最原始的创建对象的方法就是通过new来实现(手动的编写代码实现),而 ...

最新文章

  1. 深度学习在计算机视觉领域(包括图像,视频,3-D点云,深度图)的应用一览
  2. java不同项目加token访问_实战:你用SpringBoot集成JWT来实现一下token验证,可否?...
  3. 【图像分类】如何使用 mmclassification 训练自己的分类模型
  4. 服务器2003 系统修复,第十一篇 Windows Server 2003系统修复.pdf
  5. C# CKEditor、CKFinder集成使用
  6. Haybale Guessing (POJ-3657)
  7. c++ error函数_回调函数地狱
  8. 清华计算机科学与技术专业收分,2016年清华大学计算机科学与技术专业最低分是多少?...
  9. 利用AsyncHttpClient实现图片的上传与下载
  10. react轮播图插件_React 基础面试题 - 和你随便聊聊 React
  11. Linux分区类型EXT2、EXT3、EXT4详解
  12. Linux-firewalld-squid正向代理
  13. PowerDesign使用
  14. 【程序员金典】字符串互异
  15. 【理解】运用数据透视表制作三栏账
  16. Nginx动静分离经典配置
  17. 初生牛犊不怕虎,管他呢! 干就是了。
  18. oliver什么意思java_英语名字“oliver”是什么意思?
  19. 解读,投资的天使轮,A轮,B轮,C轮是啥意思
  20. 2的10次方-1的python表达式_第二章PythonⅠ的基本语法,python,I

热门文章

  1. 03-mysql的相关命令-启动与关闭服务-配置环境变量
  2. dj鲜生-10-用户注册的继续-错误提示的前端显示-防重名验证
  3. python -pymysql的操作
  4. jquery-ui寺
  5. TextBox控件的DataBindings属性
  6. PHP规范之PSR-1
  7. linux网络服务之dns
  8. destoon入门实例与常见问题汇总
  9. 关于无人职守创建office文档的问题
  10. Cisco单臂路由实验