spring_1

本文详细介绍了Spring框架的核心概念——IOC(控制反转),解释了其工作原理及优势,并探讨了依赖注入(DI)的不同方式,包括Setter、Interface、Constructor和Annotation。通过对比传统的对象创建方式,展示了IOC如何简化依赖管理和提高代码的灵活性。
摘要由CSDN通过智能技术生成

这篇博客写得稀烂,大家谨慎观看

你了解Spring IOC吗?

IOC(Inversion Of Control): 控制反转

  • 它是Sprig Core最核心的部分,是Spring家族的基本.
  • IOC是指由spring来负责控制对象的生命周期和对象间的关系.
  • IOC不能算是一种技术,应该当做一种思想.
  • 要了解IOC,我们需要先了解一下依赖注入(Dependency Injection)

DI(依赖注入)

含义: 把底层类作为参数传递给上层类,实现上层对下层的控制.

举例: 非DI思想设计行李箱
在这里插入图片描述
由图可知,行李箱依赖于箱体,箱体依赖于底盘,底盘依赖于轮子,当一切都完工之后,突然产品经理说轮子要改大一码,那就崩了,底盘,箱体,行李箱是按照轮子来做的,轮子一改,全得改,凉凉!!!

用代码来演示上述过程中的依赖关系
在这里插入图片描述
这就是典型的上层建筑依赖下层建筑

倘若我们想使得轮胎的尺寸可以动态改变的话,就要下面改成这样,红色的就是改动的地方,全都改了,崩了.
在这里插入图片描述

采用依赖注入的思想设计行李箱
在这里插入图片描述
我们先大概整出来箱子啥样,多大尺寸.
然后再去造箱体放进箱子里.
然后再去造底盘放进箱子里.
最后再去造轮子放进箱子里.
此时要改轮子就好说了嘛
这就是典型的下层建筑依赖上层建筑
在这里插入图片描述

IOC, DI, DL的关系

IOC可以通过DI/DL(依赖查找,已废弃)实现.
在这里插入图片描述

依赖注入的方式

  1. Setter
  2. Interface
  3. Constructor
  4. Annotation

依赖倒置原则,IOC,DI,IOC容器之间的关系
在这里插入图片描述

IOC容器的优势

  • 避免了在各处使用new来创建类,并且可以做到统一维护,这些都交给容器解决.
  • 创建实例的时候不需要了解其中的细节,比如上面的造行李箱的例子,我们不需要知道怎么造的,经历了哪些东西,它会直接返回给我们行李箱实例供我们使用.
  • IOC容器的工作流程图如下:
    在这里插入图片描述
    spring启动时会去读取容器中的bean配置信息,并在容器中生成一份相应的配置注册表,然后根据这张注册表去实例化bean,同时装配好bean之间的依赖关系为上层提供准备就绪的运行环境.
    spring提供了一个配置文件描述bean以及bean之间的配置关系,利用反射功能实例化bean并建立bean之间的关系.

Spring IOC支持的功能

  • 依赖注入
  • 依赖检查
  • 自动装配
  • 支持集合
  • 指定初始化方法和销毁方法
  • 支持回调方法

Spring里的核心接口或者类

1. BeanDefinition接口

  • 该接口主要是用来描述Bean的定义的,spring容器在启动的时候会将xml或者注解bean的定义解析成spring内部的BeanDefinition对象的形式.

2. BeanDefinitionRegistry接口

  • 该接口提供向IOC容器注册BeanDefinition对象的方法.

3. BeanFactory接口

  • 该接口提供了IOC的配置机制.
  • 包含了bean的各种定义,便于实例化bean
  • 还能在实例化bean之后建立bean之间的依赖关系.
  • 该接口还能对bean的生命周期进行控制.
  • 其体系结构如图:
    在这里插入图片描述

4. ApplicationContext接口

  • 该接口是BeanFactory的子接口之一.
  • BeanFactory是Spring框架的基础设施,面向Spring,ApplicationContext面向使用Spring框架的开发者,如果将spring容器比作一辆汽车,BeanFactory则是发动机,而ApplicationContext则是一辆完整的汽车.
  • 该接口继承了BeanFactory接口: 所以它可以管理,装配Bean.
  • 该接口继承了ReasourcePatternResolver接口: 所以它可以加载资源文件.
  • 该接口继承了MessageSource接口: 所以它可以实现国际化等功能.
  • 该接口继承了ApplicationEventPublisher接口: 所以它可以注册监听器,实现监听机制.
    在这里插入图片描述
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值