首页 > 其他分享 >对于@Bean注入的新理解

对于@Bean注入的新理解

时间:2024-10-23 15:44:25浏览次数:5  
标签:DefaultChainFactory logicChainGroup repository Map Spring Bean 理解 类型 注入

最近在项目中看到别人的代码是莫名奇妙就有值了,不理解原理,现在已经查明了

示例:

@Service
public class DefaultChainFactory {
    private final Map<String, ILogicChain> logicChainGroup;
    protected IStrategyRepository repository;

    public DefaultChainFactory(Map<String, ILogicChain> logicChainGroup, IStrategyRepository repository) {
        this.logicChainGroup = logicChainGroup;
        this.repository = repository;
    }

    /**
}
@Resource
    private DefaultChainFactory defaultChainFactory;
 @Test
    public void test_LogicChain_rule_blacklist() {
        ILogicChain logicChain = defaultChainFactory.openLogicChain(100003L);
        Integer awardId = logicChain.logic("user001", 100003L);
        log.info("测试结果:{}", awardId);
    }
在此求值的话会发现,我们并没有调用构造函数,但是它里面的map却有值

如何解释呢

类型匹配:Spring 在初始化 DefaultChainFactory 时,会检查构造函数的参数类型。如果参数类型是 Map<String, ILogicChain>,Spring 会查找所有实现了 ILogicChain 接口的 bean,将它们放入这个 Map 中。

没有匹配:如果构造函数的参数类型不匹配,例如如果你将参数类型定义为 List<ILogicChain> 或其他类型,Spring 将无法自动填充这个参数。在这种情况下,logicChainGroup 将保持为 null(如果没有默认值的话)或在编译时可能会报错,取决于具体的类型和上下文。

自动装配:这个自动装配过程依赖于 Spring 的依赖注入机制。只要类型匹配,Spring 就会负责管理和赋值;如果类型不匹配,它就无法找到合适的 bean 来注入。

标签:DefaultChainFactory,logicChainGroup,repository,Map,Spring,Bean,理解,类型,注入
From: https://www.cnblogs.com/fubai/p/18496565

相关文章

  • java8 stream详细理解
    stream简介Java8中的Stream是对集合(Collection)对象功能的增强,它专注于对集合对象进行各种非常便利、高效的聚合操作(aggregateoperation),或者大批量数据操作(bulkdataoperation)。StreamAPI借助于Lambda表达式,极大的提高编程效率和程序可读性。stream接口方法......
  • 【python学习记录篇】08.for、while、break、continue,在python里的使用比在英语阅读理
    小白学习纪实,跨专业学python的第八天~睡了一觉起来觉得自己又行了~   8.1循环    很多情况下,我们会比较讨厌重复着做着相同的事情,因为这样枯燥乏味。很直接的,在我们睡不着失眠的时候,我们会选择重复数绵羊加速我们睡眠。对于程序员来讲同样不喜欢重复地做......
  • cmake中link_directories()与link_libraried()全局性的理解
    在CMake中,link_directories()和link_libraries()是全局命令,这意味着它们的设置会影响之后在CMakeLists.txt文件中定义的所有目标(targets)。要深入理解这一点,下面将详细解释全局命令的作用范围、它们如何影响项目中的多个目标、以及为什么在现代CMake中更推荐使用......
  • 一文彻底理解大模型 Agent 智能体原理和案例
    什么是大模型Agent?大模型Agent,作为一种人工智能体,是具备环境感知能力、自主理解、决策制定及执行行动能力的智能实体。简而言之,它是构建于大模型之上的计算机程序,能够模拟独立思考过程,灵活调用各类工具,逐步达成预设目标的智能存在。Agent是AI大模型应用的主要新形态......
  • 一文理解布隆过滤器和布谷鸟过滤器
    大家好,我是方圆。最近在大促中使用到了布隆过滤器,之前学习但没有专门整理过,所以本次借着机会整理下相关内容,并了解了布谷鸟过滤器,希望对后续学习的同学有启发~布隆过滤器布隆过滤器是概率性数据结构,用于检查元素是否存在集合中。布隆过滤器并不存储集合中的所有元素,而是......
  • Future和CompletableFuture的理解
    使用CompletableFuture的方法直接使用CompletableFuture提交任务使用CompletableFuture.runAsync()或CompletableFuture.supplyAsync(),这些方法会使用默认线程池来执行异步任务。适合快速启动简单的异步操作,不需要额外的线程池管理。使用CompletableFuture并指......
  • 鸿蒙Next之数据同步艺术之二:深入理解标准化数据类型 (UTD)
    本文旨在深入探讨华为鸿蒙HarmonyOSNext系统(截止目前API12)的技术细节,基于实际开发实践进行总结。主要作为技术分享与交流载体,难免错漏,欢迎各位同仁提出宝贵意见和问题,以便共同进步。本文为原创内容,任何形式的转载必须注明出处及原作者。UTD的设计原则层级结构:UTD采用层级......
  • 鸿蒙Next之数据同步艺术之四:必要不充分理解分布式数据对象同步
    本文旨在深入探讨华为鸿蒙HarmonyOSNext系统(截止目前API12)的技术细节,基于实际开发实践进行总结。主要作为技术分享与交流载体,难免错漏,欢迎各位同仁提出宝贵意见和问题,以便共同进步。本文为原创内容,任何形式的转载必须注明出处及原作者。分布式数据对象的生命周期分布式数据对......
  • 理解ADC:“过采样”算不算是神操作?附带介绍Noise Spectral Density
    前言上回说到“理想ADC”中只存在量化噪声,并且介绍了SNR=6.02N+1.76dB的计算公式。那么,是否意味着“底噪”(NoiseFloor)就是这个SNR的负数呢?先来看一张图,原始出自于ADI的文章(见参考资料[1]),我做了些标注:图1ADCSNR与Noisefloor图中假设了一个12-bit的ADC,......
  • C++入门Day5 ~ 6:简单变量 & 数据类型 part 1 <8000字长文带你初步理解数据类型>
    这是我在学习中的一个小问题,希望对你也有所帮助:        问:数据类型和简单变量属于oop的基本概念吗?        答:不是!数据类型和简单变量本身并不属于面向对象编程(OOP)的基本概念,但它们是编程中的基础概念,面向对象编程会基于这些基础概念来构建更复杂的结构。......