13.IOC容器

news/2024/7/24 9:31:39 标签: java, spring

IOC容器

IOC:Inversion of Control,翻译过来是反转控制

IOC思想

获取资源的传统方式:在应用程序中的组件需要获取资源时,传统的方式是组件主动的从容器中获取所需要的资源,在这样的模式下开发人员往往需要知道在具体容器中特定资源的获取方式,增加了学习成本,同时降低了开发效率

反转控制方式获取资源:反转控制的思想完全颠覆了应用程序组件获取资源的传统方式:反转了资源的获取方向——改由容器主动的将资源推送给需要的组件,开发人员不需要知道容器是如何创建资源对象的,只需要提供接收资源的方式即可,极大的降低了学习成本,提高了开发的效率。这种行为也称为查找的被动形式

DI:Dependency Injection,翻译过来是依赖注入DI 是 IOC 的另一种表述方式:即组件以一些预先定义好的方式(例如:setter 方法)接受来自于容器的资源注入。相对于IOC而言,这种表述更直接

IOC 就是一种反转控制的思想, 而 DI 是对 IOC 的一种具体实现

传统方式:

  • Controller–>Service–>Dao,在实现逻辑业务需要在控制层创建Service对象,Controller依赖于Service

依赖注入:为当前对象所依赖的对象赋值的过程称为注入

  • 提前以设置好的方式被动的接收Spring的注入,依赖什么对象Spring就帮忙注入什么对象

IOC容器在Spring中的实现

Spring 的 IOC 容器就是 IOC 思想的一个落地的产品实现。IOC 容器中管理的组件也叫做 bean。在创建 bean 之前,首先需要创建 IOC 容器。Spring 提供了 IOC 容器的两种实现方式:

BeanFactory

这是 IOC 容器的基本实现,是 Spring 内部使用的接口。面向 Spring 本身,不提供给开发人员使用

ApplicationContext

BeanFactory 的子接口,提供了更多高级特性。面向 Spring 的使用者,几乎所有场合都使用 ApplicationContext 而不是底层的 BeanFactory

ApplicationContext的主要实现类

类型名简介
ClassPathXmlApplicationContext通过读取类路径下的 XML 格式的配置文件创建 IOC 容器对象
FileSystemXmlApplicationContext通过文件系统路径读取 XML 格式的配置文件创建 IOC 容器对象
ConfigurableApplicationContextApplicationContext 的子接口,包含一些扩展方法 refresh() 和 close() ,让 ApplicationContext 具有启动、关闭和刷新上下文的能力。
WebApplicationContext专门为 Web 应用准备,基于 Web 环境创建 IOC 容器对象,并将对象引入存入 ServletContext 域中。
image-20230116202717365

http://www.niftyadmin.cn/n/443908.html

相关文章

使用MDK-ARM(KEIL V5)创建一个工程(有图有文字)

使用keil v5创建工程是一个比较复杂的过程,还希望读者能够耐下心来,过于浮躁会使创建过程出错,导致编译器无法编译等等许多问题。 言归正传,我们接下来开始说明创建过程,说明过程以图片为主,文字为辅&…

【C】static关键字详解

概述 static的汉语意思是静态的,在C语言中static关键字可以用来修饰局部变量、全局变量和函数。 在这里给大家补充一个知识,我们的数据在内存中存储时,大概分为3个区域。 1.栈区:我们创建的局部变量、形参等一般就存放在这个区域…

ELK日志收集系统简述

一、概述 (一)ELK由三个组件构成 ELK是三个开源软件的缩写,分别是Elasticsearch、Logstash、Kibana ELK 架构基本组成 (二)作用 1、日志收集 2、日志分析 3、日志可视化 (三)为什么使用EL…

sping相关知识总结

事务传播机制: 多个事务方法相互调用时,事务如何在这些方法间传播。 Spring中对于事务的传播行为定义了七种类型分别是: REQUIRED 默认 SUPPORTS 支持 MANDATORY 强制 REQUIRES_NEW 新建 NOT_SUPPORTED 不支持 NEVER 从不 NESTED 嵌套 7种传播…

C++线程库(2)

C线程库(2) 线程同步互斥锁条件变量与互斥锁的搭配使用举例1举例2举例3 线程同步 在C线程库(1)的博客中说了互斥量只能解决多个线程访问共享资源的问题,但是很明显没有次序感,而线程安全就是不同线程访问资…

Springboot读取配置文件的方式以及多环境读取的方式

Springboot读取配置文件的方式以及多环境读取的方式 一.首先介绍一下读取配置文件中的值的方式1.Value注解2.ConfigurationProperties注解赋值3.使用 Environment 读取配置文件 多环境读取 在项目中我们可能需要灵活的配置一些参数,就会将这些参数写到yaml文件或者p…

零基础速成simulink代码生成——matlab基础介绍1

背景 MBD的定义和背景: MBD(Model-Based Design)是一种在工程领域中广泛应用的方法,通过使用数学模型来设计和开发系统。MBD方法可以提高开发效率、降低成本,并确保系统的可靠性和稳定性。MBD方法的核心是使用模型来描述系统的行为,并在模型上进行仿真和验证。MBD方法具有…

后台服务守护进程神器pm2介绍及使用

前言 linux的后台服务程序需要在后台一直运行。如果通过ssh访问临时启动的,会话一结束就直接关闭了服务。想让服务在后台一直运行且永远不挂掉,推荐后台服务守护进程神器pm2,强大且适用于各种语言的后台服务程序。 pm2介绍 对于后台进程的管…