Spring 中,有两个 id 相同的 bean,会报错吗

news2024/11/16 5:43:21

我们知道,spring容器里面的bean默认是单例的,所以id是唯一的。但是需要注意,同一类型的bean可以有不同的id,比如有id1->bean,也可以有id2->bean。

下面再来详细回答一下文章的问题。

首先,在同一个XML配置文件里面,不能存在id相同的两个bean,否则spring容器启动的时候会报错。

因为id这个属性表示一个Bean的唯一标志符号,所以Spring在启动的时候会去验证id的唯一性,一旦发现重复就会报错,

这个错误发生Spring对XML文件进行解析转化为BeanDefinition的阶段。

但是在两个不同的Spring配置文件里面,可以存在id相同的两个bean。 IOC容器在加载Bean的时候,默认会多个相同id的bean进行覆盖。

在Spring3.x版本以后,这个问题发生了变化

我们知道Spring3.x里面提供@Configuration注解去声明一个配置类,然后使用@Bean注解实现Bean的声明,这种方式完全取代了XMl。

在这种情况下,(如图)如果我们在同一个配置类里面声明多个相同名字的bean,在Spring IOC容器中只会注册第一个声明的Bean的实例。后续重复名字的Bean就不会再注册了。像这样一段代码,在Spring IOC容器里面,只会保存UserService01这个实例,后续相同名字的实例不会再加载。

如果使用@Autowired注解根据类型实现依赖注入,因为IOC容器只有UserService01的实例,所以启动的时候会提示找不到UserService02这个实例。

 

如果使用@Resource注解根据名词实现依赖注入,在IOC容器里面得到的实例对象是UserService01,于是Spring把UserService01这个实例赋值给UserService02,就会提示类型不匹配错误。 这个错误,是在Spring IOC容器里面的Bean初始化之后的依赖注入阶段发生的。

关于@Autowired注解和@Resource注解的区别可以查看我之前的文章Autowired注解与Resource注解的区别

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

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

相关文章

汽车DTC故障内码与标准故障码的解析与转换

目录 一、故障内码与标准故障码的解析 (1)故障内码的信息格式与解析 (2)故障内码中DTC状态的解析 (3)故障内码与标准故障码之间的对应关系 二、故障内码与标准故障码的转换代码 一、故障内码与标准故障…

数字化项目管理如何推动项目快速上市?【洞见6】

AIGC时代的到来,标志着互联网从信息化的轻工业时代正式进入了互联网数字化的重工业时代。随之迎来的是人工智能技术的广泛引用,如何在项目管理中应用也是一个挑战,因为的项目本身的特点就是变化、复杂。笔者在为了进行突破,开始不…

vue父子组件传值不能实时更新

最近做项目,遇到个大坑,这会爬出来了,写个总结,避免下次掉坑。 vue父子组件传值不能实时更新问题,父组件将值传给了子组件,但子组件显示的值还是原来的初始值,并没有实时更新,为什么…

基于TCP协议的文件传输系统

最简单的一对一的服务端网络端通信(socket) Socket(IP地址:端口号),例如:如果IP地址是210.37.145.1,而端口号是23,那么得到套接字就是(210.37.145.1:23) socket可以理解成计算机提供给程序员的接…

R语言实现常用的5种分析方法(主成分+因子+多维标度+判别+聚类

R语言多元分析系列之一:主成分分析 主成分分析(principal components analysis, PCA)是一种分析、简化数据集的技术。它把原始数据变换到一个新的坐标系统中,使得任何数据投影的第一大方差在第一个坐标(称为…

Android Application启动流程

详细流程分析 从 ActivityThread.java 的main方法开始看; public static void main(String[] args) {...ActivityThread thread new ActivityThread();thread.attach(systemfalse, startSeq);//1... }进入attach方法; if(!system){final IActivityMa…

flask配置https协议

感谢https://blog.csdn.net/qq_33934427/article/details/127456673,文中多有参考再实践一、要用https协议需要有ca证书,在windows10先下载windows版本openssl,地址如下https://share.weiyun.com/vfjVrMAb我是64位的选择下载完毕安装后配置环…

vmvare NAT模式设置

一、前言 这里为什么会写关于设置vmvare NAT模式的笔记呢,以前使用linux虚拟机都是使用桥接模式获取IP地址。最近出差仙林医院,发现使用无线网络,虚拟机桥接获取不到IP地址,所以使用NAT模式。 二、设置步骤 1.设置网络适配器 …

hudi系列-文件布局(file layout)

概念 hudi的文件布局是能实现增量查询、数据更新等特性的基础,每个hudi表有一个固定的目录,存放元数据(.hoodie)以及数据文件,其中数据文件可以以分区方式进行划分,每个分区有多个数据文件(基础文件和日志文件),这些数…

数据处理时代,有关数据的这些事

数据处理对于现在的企业来说已经是很平常的事,这主要是因为对数据的认识随时间的推移不断增加,企业用到数据的地方也越来越多。不过企业真正大规模利用的其实是数据资产,而非企业活动产生的所有数据,这两者并不互相统一。海量复杂…

WSH:一款功能强大的Web Shell生成器和命令行接口工具

关于WSH WSH是一款功能强大的Web Shell生成器和命令行接口工具。我们考虑到只用一个HTTP客户端来跟Webshell交互其实是一件很痛苦的事,我们需要在表格中输入命令,然后再点各种按钮。因此,我们开发出了WSH,我们可以轻松将其嵌入到…

代码随想录【Day16】| 104. 二叉树的最大深度、111. 二叉树的最小深度、222. 完全二叉树的节点个数

104. 二叉树的最大深度 题目链接 题目描述: 给定一个二叉树,找出其最大深度。 二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。 说明: 叶子节点是指没有子节点的节点。 示例: 给定二叉树 [3,9,20,null,null,15,7]&#xff0c…

在vscode中使用Typescript并运行

首先呢,我们在学习ts之前,需要先安装ts 1、安装 typescript npm install -g typescript //检查是否安装tsc -v ​ 2、生成配置文件,cd进入该文件夹,在控制台输 tsc --init ​ 此时我们就可以看到在ts文件夹下面出现了 一个tsco…

搞清品牌策划第一性原理

【班门弄斧】一个科技男的妄想~~ ………搞懂品牌营销的深层逻辑 马斯克说,搞清第一性原理 国内有学科理论支撑的品牌营销大咖 趣讲大白话:我读书多,别骗我 *********** 【国内品牌营销大咖们的理论支撑】 1、王志纲 -中国智慧(时…

C++——类和对象3

目录 1. 运算符重载 1.1 "" 的重载 1.2 前置 "" 和后置 "" 重载 1.3 流插入 "<<" 和流提取 ">>" 重载 1.4 运算符重载注意事项 2. const成员和static成员 2.1 const成员 2.2 static成员 3. 友元 …

C++递推基础知识

文章目录一、递推的概念二、递推和递归的区别三、递推的实例1、最基础的&#xff1a;斐波那契数列2、变形版斐波那契数列3、较复杂的递推式求解&#xff1a;昆虫繁殖4、经典逆推问题&#xff1a;题目数量一、递推的概念 1、什么是递推算法&#xff1f; 递推算法&#xff1a;是…

剑指 Offer 60. n个骰子的点数

题目 把n个骰子扔在地上&#xff0c;所有骰子朝上一面的点数之和为s。输入n&#xff0c;打印出s的所有可能的值出现的概率。 你需要用一个浮点数数组返回答案&#xff0c;其中第 i 个元素代表这 n 个骰子所能掷出的点数集合中第 i 小的那个的概率。 思路 动态规划&#xff1…

九龙证券|“股神”也做短线?巴菲特减仓逾八成台积电

美东时间2月14日盘后&#xff0c;“股神”巴菲特旗下公司伯克希尔哈撒韦&#xff08;下称“伯克希尔”&#xff09;发表的13F陈述引发商场热议。13F陈述被誉为“股市风向标”&#xff0c;出资者可藉此得以一窥华尔街大佬的最新出资思路。 根据美国证券交易委员会&#xff08;SE…

Vulnhub 渗透练习(三)—— Bulldog

环境搭建 下载链接 在 virtuallBox 中打开靶机。 virtuallBox 网络连接方式设置为仅主机。 vmware 设置桥接模式的网卡为 VirtualBox Host-Only Ethernet Adapter。 kail 网络适配设置为 NAT 和 桥接。 来自&#xff1a;https://blog.csdn.net/LYJ20010728/article/details/1…

JavaEE|文件操作·上

文章目录一、认识文件文件的概念文件的管理相关概念相对路径写法♋文件的分类Java中文件的操作二、File类的使用构造方法获得文件元信息判断的相关方法删除的方法与目录有关的方法修改名字三、流对象的使用什么是流文件内容操作涉及内容字节流对象InputStreamOutputStream字符流…