IOC(Inversion of Control)控制反转:把代码中需要实现的对象创建、依赖的代码反转给容器来帮忙实现。
DI(Dependency Injection)依赖注入:对象从容器中查找它的依赖类,并赋值。

思考:
1、对象与对象的关系的表示:xml,properties文件等语义化配置文件表示
2、描述对象关系的文件存放的地方:classPath,filesystem,URL网络资源,servletContext等
3、不同配置文件与对象描述进行统一化:内部需要有一个统一的关于对象的定义,所有的外部描述都必须转化成统一的描述定义
4、不同配置文件的解析:不同配置文件的语法,采用不同的解析器

Spring的核心容器类图:

1、BeanFactory:

定义IOC容器的基本规范。有3个重要的子类:
ListableBeanFactory(可列表化的bean)、
HierarchicalBeanFactory(有继承关系的bean)
AutowireCapableBeanFactory(定义bean的自动装配规则)
三个子类最终默认实现类是DefaultListableBeanFactory.
spring中提供了许多的IOC容器的实现,eg.GenericApplicationContext,ClasspathXmlApplicationContext,ApplictaionContext等。
ApplicationContext是一个高级的ioc,除了提供容器的基本功能外,还提供了以下服务:
(1)支持信息源,可以实现国际化(实现MessageSource接口)
(2)访问资源(实现ResourcePatternResolver接口)
(3)支持应用事件(实现ApplicationEventPublisher接口)


BeanFactory只对IOC的行为做了基本的定义,不关心bean是如何定义加载的。
基本功能:1、获得bean 2、判断IOC是否包含某个bean 3、bean的类型判断  4、获得bean的类型/别名

2、BeanDefinition

定义了一个具有属性值,构造声明值,被一个具体实现类提供的更多信息的bean实例

BeanDefinition 描述了一个bean的实例(属性值,构造方法声明的值,被具体实现类提供的更多的信息)
继承 :AttributeAccessor(任意对象属性访问器) , BeanMetadataElement(从资源中获取bean的数据元素)
主要功能:1、修改bean的属性: 父bean的名称、  bean的scope 、 懒加载 、bean的依赖 、自动装配
           beanFactory的名称以及方法的名称等
       2、获得一个bean的属性值:父bean的名称、bean的scope等
       3、校验bean的属性值: bean是否是自动装配候选人等

3、BeanDefinitionReader

bean的解析器,主要是对Spring的配置文件的解析。


主要功能:1、获得bean工厂对Bean注册 2、获得资源加载器/类加载器
          3、获得bean名称的某个策略   4、从特定资源中加载bean

spring的IOC类图相关推荐

  1. spring代理工厂类图

    最近在整理和复习spring事务控制,顺便复习了下spring aop,也顺便调整下博客的风格. 这个系列包括 (1)spring 代理工厂 (2)spring 代理的类图 (3)spring事务的配 ...

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

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

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

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

  4. 从源码深处体验Spring核心技术--IOC容器初体验

    开局经验之谈:可能从这一篇文章开始,小伙伴们都会有点晕车的感觉了,但是这个系列并不是只是介绍下spring表面的一些肤浅的东西,本系列的目的是为了让大家从源码层次深入理解Spring,这也是大家在未来 ...

  5. Spring入门 IOC

    JAVA就业套餐课:https://edu.csdn.net/combo/detail/1230 课程说明 一. 技术概览 轻量级的企业应用开发越来越受到广大Java应用开发者的追捧,而Spring框 ...

  6. idea中生成spring的 xml配置文件_【132期】面试再被问到Spring容器IOC初始化过程,就拿这篇文章砸他~...

    点击上方"Java面试题精选",关注公众号 面试刷图,查缺补漏 >>号外:往期面试题,10篇为一个单位归置到本公众号菜单栏->面试题,有需要的欢迎翻阅 阶段汇总集 ...

  7. 模仿Spring实现一个类管理容器

    简介: 项目的初衷是独立作出一个成熟的有特色的IOC容器,但由于过程参考Spring太多,而且也无法作出太多改进,于是目的变为以此项目作为理解Spring的一个跳板,与网上的一些模仿Spring的框架 ...

  8. Spring (Bean, IoC, AOP, SpringMVC)

    Spring - Bean, IoC, AOP, SpringMVC Spring 1. 核心容器 1.1 Spring-beans 1.1.1 Bean 的配置 1.1.1.1 自动装配 1.1.1 ...

  9. Spring框架----Spring的IOC

    1.SpringIOC概念 图中两个代码代表了两种不同的创建对象的方式 第一种创建对象的方式,我们采用的是new的方式,在采用new的方式创建对象的时候 我们在找对象的时候,是主动的在找,应用app是 ...

最新文章

  1. linux时间和时区修改(附suse)
  2. c语言和python哪个自学好-有c语言基础 自学python 应该选什么书来看?
  3. Ubuntu16.04 LTS安装配置安装CUDA8.0、CUDNN5.1
  4. php怎么去除变量里的换行,php去除字符串换行符示例分享
  5. Shell(13)——find
  6. 2021河南高考成绩查询郸城一高,郸城一高在河南有多牛 2021年高考成绩
  7. 通用mapper 如何处理多表条件查询通过list封装(一对多)
  8. 僵尸肖恩黑胶唱片_建立一个非常适合黑胶唱片的DIY放大器套件
  9. 想拥有高清壁纸不用那么麻烦!
  10. iOS面试题大全66-85
  11. office 2010 projectn visio 下载
  12. nodejs下载慢问题
  13. Java调用WebService接口
  14. python数据分析 活用pandas库_Python数据分析:活用Pandas库
  15. 【Eigen中基本和常用函数】
  16. HTML颜色编码和名称
  17. 【已解决】Win10系统点击ikbc机械键盘win键无效的解决方法
  18. 基于 WT2003H0语音芯片在扫地机/智能桌游等产品更换语音bin应用设计方案介绍
  19. 单位计算机网络管理员论文,计算机专业毕业论文(计算机网络管理软件的研究)教案.doc...
  20. 2015最新P2P行业监管细则解读

热门文章

  1. vue中的this.$router.replace()和.push()和.go()的区别解析
  2. ArcGIS专题制图(一):制图中如何给图层增加阴影立体效果
  3. Office快捷键大全之二(Excel快捷键)
  4. 经验说丨华为云视频Cloud Native架构下实践
  5. 从前慢-Mysql高级及实战
  6. 浮点型数据存储方式浅析
  7. [JS jQuery项目]仿网易云音乐项目问题摘要
  8. 【厚积薄发】Crunch压缩图片的AssetBundle打包
  9. 暗黑2 计算机中丢失,《暗黑破坏神2》部分源代码丢失不是事 暴雪照样重制
  10. 今天市场:洗洗更健康!