Spring中有哪些情况会导致@Bean注入失效呢?

2023-11-07

转自:

Spring中有哪些情况会导致@Bean注入失效呢?

下文笔者讲述Spring中导致@bean注入失败的相关情况说明,如下所示

实现思路:
    1.component-scan扫描路径配置错误
    2.@Conditional修饰条件
    3.beanName相同,导致Bean被覆盖

component-scan扫描路径配置错误

如:
  扫描路径配置为
     com.example.springboot.demo.handler。
  则不会扫描com.example.springboot.demo.handler以外的包
@SpringBootApplication
@ComponentScan(basePackages = "com.example.springboot.demo.handler")
public class DemoApplication {
    public static void main(String[] args) {
        System.out.println(System.getProperty("user.dir"));
        SpringApplication.run(DemoApplication.class, args);
    }
}

@Bean + @Conditional修饰,由于不满足Conditional条件,不加载

 
@Configuration
public class IocRegistry1 {
    @Bean
    // 不存在IocRegistry1的class文件时,才会注册Bean。显然这是个恒为false的条件。
    @ConditionalOnMissingClass("com.example.springboot.demo.ioc.IocRegistry1")
    public MyUser getMyUser1() {
        return new MyUser();
    }
}

beanName相同

当配置spring.main.allow-bean-definition-overriding=true
 如果此时有多个BeanName相同Bean定义
  此时,其中某些Bean就会被覆盖

@Bean修饰的方法
  如果不指定BeanName,默认会以方法名作为BeanName

例:
在不同类中有两个方法名相同的Bean定义
虽然返回类型不同
但生成的beanName是相同
由于配置spring.main.allow-bean-definition-overriding=true
即允许bean定义覆盖
所以以下两个bean只会有一个Bean被注册

@Configuration
public class IocRegistry1 {
    @Bean
    // BeanName默认取方法名,为getMyUser。
    public MyUser getMyUser() {
        return new MyUser();
    }
}
 
@Configuration
public class IocRegistry2 {
    @Bean
    // BeanName默认取方法名,为getMyUser。
    public User getMyUser() {
        return new User();
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Spring中有哪些情况会导致@Bean注入失效呢? 的相关文章

随机推荐

  • 本地从0搭建Stable Diffusion WebUI及错误记录

    从0开始搭建本地Stable Diffusion WebUI环境 一 环境配置 1 使用的电脑配置 系统 Windows10 处理器 英特尔 i7 内存 24GB 显卡 NVIDIA GTX 1060 6GB 2 镜像源 阿里云 清华大学
  • MySql 简介

    目录 数据存取演变历史 数据库软件应用史 数据库的本质 数据库的分类 1 关系型数据库 关系型数据库有哪些 2 非关系型数据库 非关系型数据库有哪些 MySQL简介 基本使用 系统服务制作 密码相关操作 SQL与NoSQL 数据库的概念 数
  • Spring Junit 单元测试@Test 报错 ServletContext找不到 No qualifying bean of type javax.servlet.ServletContext

    Spring Junit 单元测试 Test 报错 ServletContext找不到 No qualifying bean of type javax servlet ServletContext found for dependency
  • 微信小程序画布详解

    有的时候需要插入动画 这时就需要用到画布 接下来浅谈一下画布的功能和用法吧 wxml代码
  • Log Structured Merge Trees(LSM) 原理(LSM 算法的原理是什么?)

    十年前 谷歌发表了 BigTable 的论文 论文中很多很酷的方面之一就是它所使用的文件组织方式 这个方法更一般的名字叫 Log Structured Merge Tree LSM是当前被用在许多产品的文件结构策略 HBase Cassan
  • nginx basic auth配置踩坑记

    nginx的basic auth配置由ngx http auth basic module模块提供 对HTTP Basic Authentication协议进行了支持 用户可通过该配置设置用户名和密码对web站点进行简单的访问控制 basi
  • 「深度学习表情动作单元识别」 最新2022研究综述

    来源 专知 基于深度学习的表情动作单元识别是计算机视觉与情感计算领域的热点课题 每个动作单元描述了一种人脸局部表情动作 其组合可定量地表示任意表情 当前动作单元识别主要面临标签稀缺 特征难捕捉和标签不均衡3个挑战因素 基于此 本文将已有的研
  • js获取被选择文件的路径方法汇总

    html代码如下
  • verilog的module调用

    目录 1 MUX2to1 2 MUX3to1 3 MUX4to1 作为写过很多代码的程序员应该知道什么是函数的调用 例如下面的代码中 main函数调用了add函数对两个数值进行相加的操作 int add int a int b return
  • Asp.Net 企业微信第三方应用开发(随手笔记)

    C 企业微信第三方应用开发 OAuth2简介 1 注册企业 2 新建第三方应用 3 网页授权链接 OAuth2简介 OAuth2的设计背景 在于允许用户在不告知第三方自己的帐号密码情况下 通过授权方式 让第三方服务可以获取自己的资源信息 1
  • Vuforia 中在脚本中添加识别图被识别和丢失的回调

    start Vuforia 的unity sdk中有一个重要的脚本 DefaultTrackableEventHandler cs 这个脚本在场景中拖入ImageTarget的预制体时会自动挂载 using UnityEngine usin
  • 快速排序【模板+边界处理】

    全文目录 快速排序的思想 快速排序演示图 代码模板 i 和 j 的取值和循环处理 i 和 j 的取值 循环条件判断 边界问题 什么是边界问题 如何处理边界问题 为什么要这样处理边界问题 区间划分问题 取最值问题 mid 取中间值时是否需要
  • LLVM学习之基础知识

    介绍 学习LLVM与代码混淆技术课程总结出来的经验 希望能够帮助到大家理解 1 我们首先学会LLVM的基础知识 2 如何搭建LLVM的环境 3 编译一个Hello world 4 LLVM IR基本语法 LLVM搭建环境 Ubuntu 20
  • 让AI生成的图像转化为视频

    Hello 让AI生成图像相信都不陌生 毕竟相关内容铺天盖地 如何让AI生成的图像再转化为视频呢 让图像动起来 让图像去说话 或许是一件非常有趣的一件事情呢 那么 我们接下来要不要去试一试 马上去体验一下具有前瞻性的前沿科技呢 我想 你一定
  • 48脚STM32内部基准电压校准ADC的一些心得记录

    STM32的48脚的单片机因为没有Vref Vref 所以我们使用一些高精度参考电压芯片来提高ADC的精度很不方便 这里还有一种方法可以参考下 STM32内部有一个专门用于校准的稳压器VREFINT 它由外部的VSSA供电 他的电压一般为1
  • k8s-day1-k8s简介及基础架构

    1 K8S简介 Kubernetes是容器集群管理系统 是一个开源的平台 可以实现容器集群的自动化部署 自动扩缩容 维护等功能 Kubernetes是一个完备的分布式系统支撑平台 具有完备的集群管理能力 多扩多层次的安全防护和准入机制 多租
  • python 程序员进阶之路:从新手到高手的100个模块

    在知乎和CSDN的圈子里 经常看到 听到一些 python 初学者说 学完基础语法后 不知道该学什么 学了也不知道怎么用 一脸的茫然 近日 CSDN的公众号推送了一篇博客 题目叫做 迷思 Python 学到什么程度可以面试工作 真实反映了
  • win电脑主板设置的Bios密码清除方法

    bios保存着计算机最重要的基本输入输出的程序 开机后自检程序和系统自启动程序 它可从CMOS中读写系统设置的具体信息由于我们一般很少需求进入BIOS设置 因此久而久之 很多朋友容易忘记Bios密码 那么Bios密码忘记了怎么办呢 这是最近
  • opencv中 aplacian算子、Scharr和Sobel算子的API参数

    1 Laplacian算子 cv2 Laplacian src ddepth dst ksize scale delta borderType src 输入图像 通常为灰度图像 单通道 ddepth 输出图像的深度 一般使用cv2 CV 6
  • Spring中有哪些情况会导致@Bean注入失效呢?

    转自 Spring中有哪些情况会导致 Bean注入失效呢 下文笔者讲述Spring中导致 bean注入失败的相关情况说明 如下所示 实现思路 1 component scan扫描路径配置错误 2 Conditional修饰条件 3 bean