spring IOC的理解

1.什么是spring IOC

IOC(Inversion of Control)即控制反转,在我们以往的编程中如果需要一个bean往往需要去手动去new一个出来。而spring帮我们解决了这个问题,在spring中我们只需要去定义bean,spring就会自动的帮我们实例化并管理Bean。而这些Bean就管理在spring容器中。

2.什么是spring 容器

相信在此之前各位小伙伴也看过一些spring容器先关的介绍,感觉很高端有没有....竟然可以自动的管理Bean。其实spring容器只是有若干的Map组成的。

3.与spring容器相关的组件:

(1). BeanDefinition(Bean的定义)

举个例子:

①首先我们定义一个User类,并在xml文件中配置:

②启动Bean容器我们看看BeanDefinition中有什么

我们发现在xml文件中配置的属性与BeanDefinition相同,因此在spring中BeanDefinition用来表示我们配置的一个个<bean/>

(2)BeanDefinitionRegistry(用来注册BeanDefinition的容器),这是一个接口,其实现类为DefaultListableBeanFactory。

我们来看看DefaultListableBeanFactory的源码:

①其内含有一个ConcurrentHashMap用来存储Bean的定义

/** Map of bean definition objects, keyed by bean name */
    private final Map<String, BeanDefinition> beanDefinitionMap = new ConcurrentHashMap<String, BeanDefinition>(256);

②registerBeanDefinition方法用来讲我们的BeanDefinition注册到DefaultListableBeanFactory中

@Override
    public void registerBeanDefinition(String beanName, BeanDefinition beanDefinition)
            throws BeanDefinitionStoreException {

(3)DefaultSingletonBeanRegistry:用来管理我们的单例Bean

 
/** Cache of singleton objects: bean name --> bean instance */
    private final Map<String, Object> singletonObjects = new ConcurrentHashMap<String, Object>(256);  //用来存储完成的Bean实例

4.总结

所以我们一般所指的spring容器包括三个Map,其中DefaultListableBeanFactory中的map用来管理我们的BeanDefinition,而DefaultSingletonBeanRegistry中的map用来管理我们的单例Bean。

  这里只是介绍下对于spring IOC以及spring容器的理解,具体的流程参考bean的生命周期。

(0)

相关推荐

  • Spring框架之beans源码完全解析

    导读:Spring可以说是Java企业开发里最重要的技术.而Spring两大核心IOC(Inversion of Control控制反转)和AOP(Aspect Oriented Programmin ...

  • Spring 手动注册bean

    一般情况下,我们Spring应用中的bean都是通过注解或者xml注入到容器中的,有些情况下我们可能想手动往容器中注入bean,即编程方式注入bean. 本文所使用源码包版本:spring-beans ...

  • 死磕Spring之IoC篇 - 深入了解Spring IoC(面试题)

    该系列文章是本人在学习 Spring 的过程中总结下来的,里面涉及到相关源码,可能对读者不太友好,请结合我的源码注释 Spring 源码分析 GitHub 地址 进行阅读 Spring 版本:5.1. ...

  • 通过Spring注解注册Bean的四种方式

    文章目录 包扫描+组件标注注解 @Bean注解 @Import注解 使用FactoryBean(工厂Bean) 给spring容器中注册bean有四种通过注解的方式: 包扫描+组件标注注解 @Bean ...

  • 解析:Spring IoC容器

    IoC容器是Spring的核心,也可以称为Spring容器.Spring通过IoC容器来管理对象的实例化和初始化,以及对象从创建到销毁的整个生命周期. Spring中使用的对象都由IoC容器管理,不需 ...

  • 工厂模式讲解, 引入Spring IOC

    目录 引入 简单工厂 抽象工厂 Spring的bean工厂 模拟Spring工厂实现 模拟IOC 引入 假设有一个司机, 需要到某个城市, 于是我们给他一辆汽车 public class Demo { ...

  • Spring Ioc的原理

    今天给大家介绍一下关于SpringIoc原理的详解,首先Ioc是InversionofControl.翻译过来就是控制反转,意思是对象之间的关系不再由传统的程序来控制,而是由spring容器来统一控制 ...

  • Java开发中SSM框架整合开发之 Spring IoC

     Spring IoC的基本概念 控制反转(Inversion of Control,IoC)是一个比较抽象的概念,是Spring框架的核心,用来消减计算机程序的耦合问题.依赖注入(Dependenc ...

  • 死磕Spring之IoC篇 - 调试环境的搭建

    该系列文章是本人在学习 Spring 的过程中总结下来的,里面涉及到相关源码,可能对读者不太友好,请结合我的源码注释 Spring 源码分析 GitHub 地址 进行阅读 Spring 版本:5.1. ...

  • 死磕Spring之IoC篇 - BeanDefinition 的解析阶段(XML 文件)

    该系列文章是本人在学习 Spring 的过程中总结下来的,里面涉及到相关源码,可能对读者不太友好,请结合我的源码注释 Spring 源码分析 GitHub 地址 进行阅读 Spring 版本:5.1. ...

  • Spring: (一) -- 春雨润物之 核心IOC

    顶哥说官网同步更新:www.dintalk.cn   使用BeanFactory解耦 Spring使用步骤 IOC配置 DBUtils的使用 常用文件约束头 作为一个Java人,想必都或多或少的了解过 ...

  • 小白新手web开发简单总结(六)-Spring的IoC容器

    目录 一 前言 二 什么是IoC容器 三 实例 1.通过XML配置规则 2.通过注解 3.Spring中的其他几种注解 四 JavaBean生命周期的监听 五 总结 一 前言 接上篇小白新手web开发 ...