Spring 6.X IoC 容器

2023-11-10

一、Spring IoC 容器和 Bean 简介

下面主要介绍 Spring 框架对控制反转 (IoC) 原理的实现

  • 首先要说明的是:IoC 也称为依赖注入,这是一个过程。

  • 其次依赖项的定义:对象仅通过构造函数参数、工厂方法的参数,或在构造对象实例、工厂方法返回后在对象实例上设置的属性来定义其依赖项(即它们使用的其他对象) 。

  • 依赖注入:容器在创建 bean 时注入前两个步骤的依赖项。这个过程从根本上来说是 bean 本身的逆过程(因此得名“控制反转”),通过使用类的直接构造或诸如服务定位器模式之类的机制来控制其依赖项的实例化或位置。

  • 涉及到的包:org.springframework.beansSpring org.springframework.contextFramework 的 IoC 容器的基础,其中 BeanFactory 接口提供了能够管理任何类型对象的高级配置机制, ApplicationContext 是 BeanFactory 的子接口。它提供了更轻松地与 Spring 的 AOP 功能集成、消息资源处理(用于国际化)、活动发布、应用程序层特定上下文,例如:WebApplicationContext 用于 Web 应用程序的上下文。

    简而言之,BeanFactory提供了配置框架和基本功能,ApplicationContext添加了更多企业特定的功能。

  • Bean:BeanFactory在 Spring 中,构成应用程序主干并由 Spring IoC 容器管理的对象称为 bean。bean 是一个由 Spring IoC 容器实例化、组装和管理的对象。如果不由IoC来管理的话,bean 就只是应用程序中的众多对象之一。Bean 以及它们之间的依赖关系反映在容器使用的配置元数据中。

1.1、容器概述

  • ApplicationContext接口
    Spring IoC 容器的主要接口为 org.springframework.context.ApplicationContext,它负责实例化、配置和组装 bean。容器通过读取配置元数据来获取要实例化、配置和组装哪些对象的指令。配置元数据以 XML、Java 注释或 Java 代码表示。它可以让应用程序的对象以及这些对象之间丰富的相互依赖性

  • ApplicationContextSpring
    ApplicationContextSpring 提供了ApplicationContext接口的多种实现。在独立应用程序中,创建 ClassPathXmlApplicationContext 或FileSystemXmlApplicationContext的实例是很常见的。虽然 XML 是定义配置元数据的传统格式,但是可以通过提供少量 XML 配置来指示容器使用 Java 注释或代码作为元数据格式,以声明方式启用对这些附加元数据格式的支持。

  • 实例化
    在大多数应用场景中,不需要显式的用户代码来实例化一个或多个 Spring IoC 容器实例。

  • 工作视图
    应用程序类与配置元数据相结合,以便在ApplicationContext创建和初始化后,拥有一个完全配置且可执行的系统或应用程序。

在这里插入图片描述

1.3、使用

ApplicationContext 是一个高级工厂的接口,能够维护不同 bean 及其依赖项的注册表。通过使用 方法 T getBean(String name, Class T requiredType),可以检索 bean 的实例。

// 创建并配置bean
ApplicationContext context = new ClassPathXmlApplicationContext("services.xml", "daos.xml");

//检索配置的实例
PetStoreService service = context.getBean("petStore", PetStoreService.class);

//使用配置的实例
List<String> userList = service.getUsernameList();
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Spring 6.X IoC 容器 的相关文章

随机推荐

  • 基于2维卷积神经网络的心电图分类

    在这里给大家分享一篇关于用深度学习进行心电图识别的论文 原文地址https arxiv org abs 1804 06812 我翻译成了中文以便大家快速学习 中间难免有疏忽遗漏的地方 请大家谅解 深度医疗 1 心电图特征识别 这篇文章是由韩
  • C++入门基础05:表达式(表达式基础、算术运算符与赋值运算符、逻辑关系运算符、成员访问运算符与条件运算符、位运算符、移位运算符与类型转换)

    C 入门基础05 表达式 表达式基础 算术运算符与赋值运算符 逻辑关系运算符 成员访问运算符与条件运算符 位运算符 移位运算符与类型转换 一 表达式基础 include
  • LInux下串口编程详解细节

    LInux下串口设置详解 日期 2011 04 01 来源 Linux社区 作者 huang879135 字体 大 中 小 串口的设置主要是设置struct termios结构体的各个成员值 include
  • 【浙大版《Python 程序设计》题目集(解)】第6章函数-1 使用函数求特殊a串数列和(10分)

    给定两个均不超过9的正整数a和n 要求编写函数fn a n 求a aa aaa aa aa n个a 之和 fn须返回的是数列和 函数接口定义 fn a n 其中 a 和 n 都是用户传入的参数 a 的值在 1 9 范围 n 是 1 9 区间
  • 快排函数 -- qsort函数(Quick Sort)

    文章目录 1 qsort函数简介 1 1 函数原型 1 2 参数含义 2 比较函数介绍 3 比较函数使用案例 3 1 整型数组 3 2 浮点型数组 3 3 结构体类型 字符串 4 利用冒泡排序模拟实现qsort函数的功能 1 qsort函数
  • 图形验证码文字识别——pytesseract

    图形验证码内容识别 pytesseract 一 目的 二 实现方式 三 环境准备 四 代码实现 五 拓展 一 目的 我们工作中会遇到一些需要把图片中的文字识别出来使用的例子 比如 图形验证码 提取图片中的文章等 如果工作量比较小或者不需要重
  • 你知道数据发散和数据倾斜么?

    该问题已同步到小程序 全栈面试题 问题 在数据开发日常工作当中 数据发散和数据倾斜问题是比较常见的 那么我们该如何判断呢 同时该如何规避这两种问题呢 注意 该问题也经常会被面试官拿来提问面试者 解答 基于以上问题 大佬们给出了如下的回答 数
  • MLAPI你想需要关注的新的Unity网络框架

    在乱翻PackageManager的时候 无意间看到这么一个玩意 Multiplayer HLAPI 熟悉的unity的朋友知道 unity5的时代 unity大力推广过他自己的Unet框架 内置在unity中 现在时过境迁 你不仅找不到U
  • C++语法基础之栈和队列

    栈 头文件 lt stack gt 实例化 stack在内部默认使用std deque存储数据 但是可以指定使用vector或者list存储数据 示例 std stack
  • GB28181学习(四)——网络设备信息查询

    要求 源设备向目标设备发送信息查询命令 目标设备将结果通过查询应答命令返回给源设备 设备信息查询命令包括 设备目录 设备信息 设备状态信息 设备配置 预置位 看守位 巡航轨迹列表 巡航轨迹 PTZ精准状态 存储卡状态等 信息查询的范围 本地
  • self、__doc__、__init__、__name__

    1 self参数用于类定义中 不可省略 独立的函数或方法中不含有self参数 self不是Python的关键字 可替换成别的 在类实例化时 self自动绑定到self实例上 指向类实例对象本身 已完成类对自身属性的调用 gt gt gt c
  • springboot之用户操作日志

    自定义注解 SysLog作用于方法 import java lang annotation Target ElementType METHOD Retention RetentionPolicy RUNTIME Documented pub
  • FreeRTOS系统配置文件详解

    简介 在实际使用FreeRTOS 的时候我们时常需要根据自己需求来配置FreeRTOS 而且不同架构的MCU 在使用的时候配置也不同 FreeRTOS 的系统配置文件为FreeRTOSConfig h 在此配置文件中可以完成FreeRTOS
  • 如何安装Chocolatey

    最近在研究包管理器的工作原理 便想着安一个chocolatey下来 安装程序也方便一些 结果在csdn一找 人差点没给我气死 转载 以讹传讹 胡诌 过时的一大堆 都不咋靠谱 写这篇文章的目的就是让大家知道 Chocolatey到底是怎么安装
  • 摄影:相机的白平衡怎么用?

    转自 https baijiahao baidu com s id 1627541021956100392 wfr spider for pc 白平衡 顾名思义就是保持白色的平衡 拥有还原环境色彩的能力 白平衡作为拍摄过程中的一项重要设置
  • Oracle的package用法测试

    oralce的package由 包头和包体构成 包头声明要做的事情 包体做具体的实现 话不多说直接上代码 create or replace package pkg firste test as procedure p update lab
  • Stable Diffusion与Midjourney比较,哪个更符合普通人需求?

    先来说一下它们的区别 主要有两点 成本和出图速度 第一点 成本 Stable Diffusion是一款开源且免费使用的模型 可以在本地部署 但需要高性能电脑配置支持 虽然跑图速度还不错 但必须配备稳定的网络环境 Midjourney也需要稳
  • 【C写文件】C/C++读写文本文件、二进制文件/文件读写

    目录 一 目的 二 C语言文本文件读写 1 文本文件写入 2 文本文件读取 三 C语言二进制文件读写 1 二进制文件写入 2 二进制文件读取 四 C 文本文件读写 1 文本文件写入 2 文本文件读取 五 C 二进制文件读写 1 二进制文件写
  • nginx动态配置配置

    nginx中的conf文件配置测试 upstream backServer server 127 0 0 1 11111 upsync 192 168 212 134 8500 v1 kv upstreams itmayiedu upsyn
  • Spring 6.X IoC 容器

    目录 一 Spring IoC 容器和 Bean 简介 1 1 容器概述 1 3 使用 一 Spring IoC 容器和 Bean 简介 下面主要介绍 Spring 框架对控制反转 IoC 原理的实现 首先要说明的是 IoC 也称为依赖注入