当前位置: 首页 > news >正文

Spring中存在两个相同的Bean是否会报错?

第一种情况:使用XML的方式设置Bean,这种情况在Spring启动时就会报错,因为ID在Spring中是Bean的唯一标识,Spring容器在启动时会校验唯一性,一旦发现重复就会报错。但是如果是在两个不同的XML文件中定义两个相同的Bean,Spring容器会在启动时用第二个覆盖第一个,最终只有一个Bean,不会报错。

第二种情况:出现在Spring3.x之后,Spring支持以@Configration来声明一个配置类,然后用@Bean的形式声明一个Bean,这种形式完全替换了XML的格式,不会出现报错。那么当一个配置类中声明了多个相同的Bean时,IOC容器只会注册第一个Bean,后续重复的Bean都会忽略。

@Configuration
public class SpringConfiguration {
@Bean( name = "service" )
public Service1 service1( ){
return new Service1( );
}
@Bean( name = "service" )
public Service2 service2( ){
return new Service2( );
}
}

比如,像这样一段代码,在Spring IoC容器中,就只会保留service1这个实例。后续相同名字的Bean就不会再加载,当然也不会报错。

第三种情况,如果使用@Autowired注解来实现依赖注入的话,它是根据类型来注入的。比如像这样一段代码

@Autowired
private Service1 service1;
@Autowired
private Service2 service2;

因为IOC容器只有Service1的实例,所以启动的时候会提示找不到Service2这个实例

第四种情况,再看这样一段代码:

@Resource( name="service" )
private Service1 service1;
@Resource( name="service" )
private Service2 service2;

如果使用@Resource注解根据名称来实现依赖注入的话,那么在IoC容器中只能获取到Service1的实例,
于是,Spring会把Service1这个实例赋值给Service2,这个时候,就会提示类型不匹配的错误

http://www.xdnf.cn/news/1301869.html

相关文章:

  • Java 大视界 -- Java 大数据在智能教育虚拟学习环境构建与学习体验增强中的应用(399)
  • STM32F103C8T6学习——直接存储器访问(DMA)标准库实战3(ADC数据采集+DMA回传)
  • 开始回溯的学习
  • I/O多路复用特性与实现
  • 【学习嵌入式day-25-线程】
  • 扣子(Coze),开源了!Dify 天塌了
  • 无人机智能跟踪模块设计与运行分析
  • Mac Mysql 卸载
  • 【Docker】openEuler 使用docker-compose部署gitlab-ce
  • C++设计模式:类间关系
  • 企业级时序数据库选型指南:从传统架构向智能时序数据管理的转型之路
  • Flinksql bug: Heartbeat of TaskManager with id container_XXX timed out.
  • gitee_流水线搭配 Dockerfile 部署vue项目
  • MetaFox官方版:轻松转换视频,畅享MKV格式的便捷与高效
  • 【Linux基础知识系列】第九十六篇 - 使用history命令管理命令历史
  • std::set_symmetric_difference
  • 4. 图像识别模型与训练策略
  • 解锁AI大模型:Prompt工程全面解析
  • Spring MVC ModelAndView 详解
  • Linux网络基础(一)
  • 【计算机视觉与深度学习实战】01基于直方图优化的图像去雾技术
  • Python入门第3课:Python中的条件判断与循环语句
  • 电商架构测试体系:ZKmall开源商城筑牢高并发场景下的系统防线
  • Dijkstra与Floyd求最短路算法简介
  • 【JAVA高级】实现word转pdf 实现,源码概述。深坑总结
  • Vue3 学习教程,从入门到精通,Axios 在 Vue 3 中的使用指南(37)
  • 在Ubuntu 22.04上安装远程桌面服务
  • 关于C++的#include的超超超详细讲解
  • 为什么 /deep/ 现在不推荐使用?
  • 稳定且高效:GSPO如何革新大型语言模型的强化学习训练?