Spring 6.X IoC 容器

目录

  • 一、Spring IoC 容器和 Bean 简介
    • 1.1、容器概述
    • 1.3、使用

一、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();

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/74162.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

企业架构LNMP学习笔记23

1、隐藏版本号&#xff1a; Nginx对外提供服务&#xff0c;为了避免被针对某个版本的漏洞进行攻击。经常做法是隐藏掉软件的版本信息&#xff0c;提供一定的安全性。 server_tokens off; https和CA&#xff1a; 1&#xff09;基于SSL CA证书的公私钥的安全性。 CA是需要生成…

【公网远程手机Android服务器】安卓Termux搭建Web服务器

目录 概述 1.搭建apache 2.安装cpolar内网穿透 3.公网访问配置 4.固定公网地址 5.添加站点 概述 Termux是一个Android终端仿真应用程序&#xff0c;用于在 Android 手机上搭建一个完整的Linux 环境&#xff0c;能够实现Linux下的许多基本操作&#xff0c;不需要root权限…

CF1120 D. Power Tree 巧妙的图论转化

传送门 [前题提要]:无 题目描述: 就是给你一棵树,然后每个点有花费,然后你可以选一个点,付费后对这个点的子树的所有叶子结点增减任意权值. 考虑有一个人会给这棵树的所有叶子结点赋值(值我们不知道),输出最小的花费,使得无论它如何赋值,我们使用上述的花 费都能使所有的叶子…

代码随想录day46|139. 单词拆分

139. 单词拆分 class Solution:def wordBreak(self, s: str, wordDict: List[str]) -> bool:dp [False]*(len(s)1)dp[0]Truefor i in range(len(s)1):for j in wordDict:if i>len(j) and (s[i-len(j):i] in wordDict) and dp[i-len(j)]:dp[i] Truereturn dp[len(s)]多…

vue中在弹框中使用form表单,取消默认的回车提交效果-刷新页面

前言&#xff1a; vue项目中使用dialog弹框的时候&#xff0c;如果在弹框上使用form表单&#xff0c;但是我们只是使用他的input框&#xff0c;不需要它默认的提交功能的时候&#xff0c;会出现input聚焦&#xff0c;回车刷新页面&#xff0c;是因为他触发了默认的form提交方法…

Excel VSTO开发8 -相关控件

版权声明&#xff1a;本文为博主原创文章&#xff0c;转载请在显著位置标明本文出处以及作者网名&#xff0c;未经作者允许不得用于商业目的。 8 相关控件 在VSTO开发中&#xff0c;Ribbon&#xff08;或称为Ribbon UI&#xff09;是指Office应用程序中的那个位于顶部的带有选…

C++零碎记录(一)

1. 面向对象三大特性 ① C面向对象的三大特性为&#xff1a;封装、继承、多态。 ② C认为万事万物皆为对象&#xff0c;对象上有其属性和行为。 ③ 例如&#xff1a; 1. 人可以作为对象&#xff0c;属性有姓名、年龄、身高、体重......行为有走、跑、跳、吃饭、唱歌.... 2. …

End-to-end 3D Human Pose Estimation with Transformer

基于Transformer的端到端三维人体姿态估计 摘要 基于Transformer的架构已经成为自然语言处理中的常见选择&#xff0c;并且现在正在计算机视觉任务中实现SOTA性能&#xff0c;例如图像分类&#xff0c;对象检测。然而&#xff0c;卷积方法在3D人体姿态估计的许多方法中仍然保…

el-table自适应列宽实现

【背景小记】 el-table的el-table-column如果不指定width的话&#xff0c;会自动设定一个宽度&#xff0c;表格内容会自动换行&#xff0c;对强迫症用户来说非常不友好&#xff0c;为了追求完美用户体验&#xff0c;所以这里需要实现两个效果&#xff1a; 1. 强制表格内容不换…

vue项目一个页面包含多个时间选择器的处理方案

描述&#xff1a;vue项目中如果在一个页面使用多个时间选择器组件时&#xff0c;不同的时间选择器需要分别分开工作 解决方案一 原本是想直接每一个时间选择器都安排一套相对独立的维生系统&#xff0c;但是到后面发现繁琐至极&#xff0c;而且报错&#xff0c;果断放弃&#…

JSP SSM 成果展示系统myeclipse开发mysql数据库springMVC模式java编程计算机网页设计

一、源码特点 JSP SSM 冬奥建设成果展示系统是一套完善的web设计系统&#xff08;系统采用SSM框架进行设计开发&#xff0c;springspringMVCmybatis&#xff09;&#xff0c;对理解JSP java编程开发语言有帮助&#xff0c;系统具有完整的 源代码和数据库&#xff0c;系统主…

PHP教学质量评估系统Dreamweaver开发mysql数据库web结构php编程计算机网页代码

一、源码特点 PHP教学质量评估系统是一套完善的web设计系统&#xff0c;对理解php编程开发语言有帮助&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用B/S模式开发。 代码 https://download.csdn.net/download/qq_41221322/88301983 论文 https://down…

Pinyin4j介绍和简单使用

前言 Pinyin4j是一个Java库&#xff0c;用于将汉字转换为拼音。它是由中国清华大学的Tsinghua University和中国科学院计算技术研究所的研究人员开发的。Pinyin4j可以用于Java应用程序中&#xff0c;以便在需要时将汉字转换为拼音。例如&#xff0c;它可以用于中文输入法、文本…

【牛客刷题】反转固定区间链表、每k个节点一组反转

链表内指定区间反转_牛客题霸_牛客网 ListNode* reverseList(ListNode* head, ListNode* tail) {ListNode* pre nullptr;ListNode* cur head;while (cur ! tail) { 最后cur就是tailListNode* temp cur->next;cur->next pre;pre cur;cur temp;}return pre;}ListNode…

ReactiveUI MVVM框架(1)-Collections

ReactiveUI MVVM框架&#xff08;1&#xff09;-Collections ReactiveUI使用动态数据&#xff08;DynamicData&#xff09;用于集合的操作。 当对动态数据集合进行更改时&#xff0c;会产生更改通知&#xff0c;通知表示为ChangeSet&#xff0c;里面包含了更改信息&#xff0…

AR工业远程巡查系统:实时监控设备状态,及时发现潜在问题

随着工业4.0的到来&#xff0c;先进的技术和创新的解决方案正在改变着工业生产的方式。其中&#xff0c;增强现实&#xff08;AR&#xff09;技术带来的工业巡检系统就是一个典型的例子。这种系统通过在现实世界中添加虚拟信息&#xff0c;使得操作人员能够更有效地进行检查和维…

入门ElasticSearch :为什么选择ES作为搜索引擎?

介绍 随着数据量的不断增长&#xff0c;搜索和分析大规模数据集变得越来越重要。传统数据库在面对这种需求时往往表现不佳&#xff0c;这时候就需要一种专门用于搜索和分析的引擎。ElasticSearch &#xff08;简称ES&#xff09;就是这样一款强大的搜索引擎&#xff0c;它具有许…

Java设计模式之建造者模式详解(Builder Pattern)

在日常的开发工作中&#xff0c;我们常常需要创建一些复杂的对象。这些对象可能包含许多不同的属性&#xff0c;并且这些属性的初始化过程可能相当复杂。在这种情况下&#xff0c;建造者模式是一种非常有用的设计模式&#xff0c;因为它允许我们分步骤地创建复杂的对象。 概念和…

软件概要设计-架构真题(二十五)

软件概要设计包括软件设计的结构、确定系统功能模块及其相互关系&#xff0c;主要采用&#xff08;&#xff09;描述程序的结构。&#xff08;2018年&#xff09; 程序流程图、PAD图和伪代码模块结构图、数据流图和盒图模块结构图、层次图和HIPO图程序流程图、数据流图和层次图…

2023 IntelliJ IDEA下载、安装教程, 附详细图解

文章目录 下载与安装IDEA推荐阅读 下载与安装IDEA 首先先到官网下载最新版的IntelliJ IDEA, 下载后傻瓜式安装就好了 官网下载地址&#xff1a;https://www.jetbrains.com/ 1、下载完后在本地找到该文件&#xff0c;双击运行 idea 安装程序 2、点击 Next 3、选择安装路径&…