首页 > 编程语言 >spring 源码之 IOC 容器的初始化过程

spring 源码之 IOC 容器的初始化过程

时间:2022-10-09 12:06:00浏览次数:40  
标签:容器 beanFactory 水桶 spring 接口 源码 IOC


  学习 spring源码真的是一件痛并快乐的刺激的事。昨天听了别人的视频,任然是一头雾水,层次不一样,就不太容易接受。直接打开spring源码,断点调试,有点难度。于是又捧起书,《深入理解spring技术内幕》,先学习一些里边的概念,设计模式。再回头自己撸源码比较好一点。

  展开学习,和记录。我尽量少用术语,用故事,或者白话,来讲出来理解的内容。

# # spring 的核心内容就是 IOC

  IOC 总结成一句话,它的作用就是用来帮我们维护对象之间的关系。所谓的控制反转反转的就是对象的创建。不用spring 我们创建一个对象通常是 new ,或者使用反射,克隆等,来实现。 而在使用spring 以后,spring 替你来掌握对象的实例化,来帮你维护这些对象之间的关系。

  大家选用spring 也正是因为,spring 帮我们 从复杂的对象关系的依赖维护中解脱出来。

 

# # IOC 容器

  在书中指出,容器有两个系列:一个是 beanFactory, 一个是 applicationContext 。 至于究竟是什么,我先不说。既然是容器,那就先理解成是水桶把,一个是木质的水桶,一个是钢铁的水桶。

  beanFactory 是一个接口。其实就是一个最简版的具有一定雏形的水桶,就像是打个样。它告诉大家,水桶要能装水,要有一个提手,装着水不能撒。

  所以 beanFactory 可以理解为低配版,而 applicationContext 是定制版,至尊版。

 

# # beanDefinition

 这个东东就是最核心的数据结构,就是它要完成对对象关系之间的抽象。 beanDefinition 就是水桶里边装的水。

 

# # 容器的设计

spring 源码之 IOC 容器的初始化过程_spring

 

 # 第一条主线 beanFactory

  beanFactory 是一个接口,提供最基础的定义,像 getBean()

  下边 通过增加 接口的形式来扩展功能和定义。

  hierarchicalBeanFactory 接口实现了 beanFactory 接口,增加了getParentBeanFactory(),这个扩展赋予了管理双亲IOC容器的管理功能。

  configurableBeanFactory 接口 实现了  hierarchicalBeanFactory 接口,通过addBeanPostProcessor()配置 bean 的后置处理器

 从中我们可以学习到的是这种设计的理念,我们也可以通过这样接口设计的方式来进行功能的扩展。

 

# 第二条主线 applicationContext

 是从 beanFactory 到 configurableApplicationContext 或者  webApplicationContext  

 后边这两个是我们经常用到的。

 

# #  容器的启动过程


 

 

 

标签:容器,beanFactory,水桶,spring,接口,源码,IOC
From: https://blog.51cto.com/u_15812686/5740072

相关文章

  • Springboot创建项目(idea版本)
    一:概述由于springboot项目,不管是java工程还是web工程都可以直接以jar方式运行,所以推荐创建jar工程,这里创建jar工程项目为例。二:两种方式创建springboot项目1.第一种方式手动......
  • Spring多数据源配置
    Spring多数据源配置,这里持久层框架使用mybatis,集成Mybatis多数据源有两种方式:1、创建多个SqlSessionFactory,扫描每个SqlSessionFactoryBean对应的包,形成了每个Factory对应一......
  • Springboot自定义Stater
    1、默认启动器Boot会将项目中常用的场景做成对应的starter启动器,项目中涉及到什么场景就引入该场景对应的启动器,项目中引入这些启动器之后,和这个starter相关的依赖也会被引......
  • Spring读取配置文件
    一、Resource在Java程序中,我们经常会读取配置文件、资源文件等。使用Spring容器时,我们也可以把“文件”注入进来,方便程序读取。Spring提供了一个​​org.springframework.co......
  • Springboot自动配置原理
    一个boot项目启动类有个@SpringBootApplication注解,查看此注解主要包括@SpringBootConfiguration、@EnableAutoConfiguration、@ComponentScan三个注解@SpringBootConfigura......
  • springCloud 中 当需要有生产者集群的时候几个关键点
     前提条件是:使用Eureka 作为注册中心,并且搭建好了 Euraka 集群。当我们需要使用 多个生产者来形成集群来达到高可用。 生产者就是服务提供者,消费者就是服务调用者。 ......
  • springcloud- Eureka 单机版注册中心
    eureka 使用过程 简单的梳理:服务客户三步走,pom,yml,主启动。 首先搭建 eureka 注册中心服务 创建一个 maven 项目 ##引入相关的pom<?xmlversion="1.0"encoding......
  • 说说 Spring 定时任务如何大规模企业级运用
    作者:姚辉(千习)Spring定时任务简介定时任务是业务应用开发中非常普遍存在的场景(如:每分钟扫描超时支付的订单,每小时清理一次数据库历史数据,每天统计前一天的数据并生成报......
  • JDK 1.8 HashMap 扩容源码详解
     作为开发人员,千万不能停留在实现功能上,一定要提升到性能方面上。这需要我们不断的实践,学习源码, 根据底层实现原理,来做出最好的操作。 就HashMap而言,一定是我们常用的......
  • 把你的springboot启动图(banner)设置成圣嘉然!
    在resource文件夹下面新建一个banner.txt的文件!然后插入如下的文字!点击查看代码...,]]]/@@@@@O]]]]]`........,]]]..............