码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • Spring中有哪些情况会导致@Bean注入失效呢?


    转自:

    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();
        }
    }
  • 相关阅读:
    视觉算法需要哪些知识,视觉算法和图像算法
    代理IP与Socks5代理在网络安全与数据隐私中的关键作用
    nodejs+Vue+Elementui的校园二手旧书交易交换平台sequelize
    【详解】如何手写实现call、apply、bind
    Java 腾讯邮箱发送邮件工具类(单人+多人)
    将任何网页变成桌面应用,全平台支持 | 开源日报 No.184
    基于Yolov8的工业小目标缺陷检测(9):Gold-YOLO,遥遥领先,超越所有YOLO | 华为诺亚NeurIPS23
    一、【Photoshop如何根据不同类型图像抠图】
    GeoServer:Vector Tiles-矢量瓦片制作与加载
    基于SSM+Vue的在线购书商城系统
  • 原文地址:https://blog.csdn.net/qq_25073223/article/details/128142652
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号