springboot中抽象类无法注入到ioc容器

news2024/11/22 22:56:51

1、背景

在写代码时,发现service接口有两个实现类,并且两个实现类中没有对类名重命名,属性注入的时候也没有使用byName或@Qualifier,正确情况下会发生多实现报错的问题,以前对这个问题进行解析过。
在这里插入图片描述

在这里插入图片描述

2、调试过程

我想通过直接从IOC容器获取接口类型的实现类,看看有几个所以添加了如下代码,发现只有一个实现类,查看没有注入的类发现是抽象类。
在这里插入图片描述
在这里插入图片描述

3、结论

通过查阅,类扫描加载部分代码,发现ClassPathScanningCandidateComponentProvider类中findCandidateComponents方法。如果是抽象类的话,类中方法上有@Lookup注解才能被注入ioc容器,注解只能使用在方法上,在方法上加入注解后,重新启动,果然报错了,说明此抽象方法被注入Ioc容器,有兴趣的朋友可以打断点看看ClassPathScanningCandidateComponentProvider在什么时候创建,findCandidateComponents什么时候调用的。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

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

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

相关文章

Swift 中 @preconcurrency 修饰符使用浅谈

概述 Swift 6.0 与我们越来越近了,如何将旧范儿的并发代码装换为严格遵守 Swift 6.0 并发模型( Strict Concurrency)的新代码,这往往使得秃头码农们又要多抓掉几根头发了。 所以,为了最大限度的保持新旧两个并发世界暂…

视频删除怎么恢复?这2个方法或许能帮到你

随着科技的发展,手机视频的拍摄和存储技术也不断提高,在我们的生活中也扮演着越来越重要的角色,或是作为新媒体工作者的工作内容,或是成为我们分享生活的途径,视频占据的分量越来越重。然而,由于各种原因&a…

10- Redis 键值对数据库是怎么实现的?

在开始将数据结构之前,先给介绍下 Redis 是怎样实现键值对(key-value)数据库的。 Redis 的键值对中的 key 就是字符串对象,而 value 可以是字符串对象,也可以是集合数据类型的对象,比如 List 对象&#xf…

JAVA应用服务器如何快速定位CPU问题

如果服务器上部署了多个Java站点服务和Java微服务,并且突然接收到CPU异常告警,我们需要逐步确定是哪个服务进程造成了CPU过载,接着是哪个线程,并最终定位到是哪段代码导致了这个问题 简要步骤如下: 步骤一、找到最耗C…

用Idea 解决Git冲突

https://intellijidea.com.cn/help/idea/resolving-conflicts.html https://www.jetbrains.com/help/idea/resolve-conflicts.html idea 官方文档 当您在团队中工作时,您可能会遇到这样的情况:有人对您当前正在处理的文件进行更改。如果这些更改没有重叠(也就是说…

深入分析 Android Service (一)

文章目录 深入分析 Android Service (一)1. Android Service 设计说明1.1. Service 的类型1.2. Service 的生命周期1.3. 创建和启动 Service1.4. 绑定 Service1.5. ServiceConnection1.6. 前台 Service1.7. IntentService示例:创建和使用 IntentService 2. Service …

视频汇聚EasyCVR平台GA/T 1400视图库应用:助力社会治安防控效能提升

在信息化、智能化的时代浪潮下,公安视频图像信息应用系统的发展与应用显得尤为重要。GA/T 1400标准,全称为《公安视频图像信息应用系统》,作为公安行业的一项重要标准,其视图库的应用在提升公安工作效能、加强社会治安防控等方面发…

通过强化学习彻底改变大型数据集特征选择

文章目录 一、说明二、强化学习:特征选择的马尔可夫决策问题三、用于使用强化学习进行特征选择的 python 库3.1. 数据预处理3.2. 安装和导入FSRLearning库 四、结论和参考文献 一、说明 了解强化学习如何改变机器学习模型的特征选择。通过实际示例和专用的 Python 库…

TrueNAS开启SSH登录ROOT

简介: 从 SCALE Bluefin 22.12.0 开始,为了加强安全性并遵守联邦信息处理标准 (FIPS),root帐户登录已被弃用。所有 TrueNAS 用户都应创建具有所有必需权限的本地管理员帐户,并开始使用它来访问 TrueNAS。当根用户密码被禁用时,只有管理用户帐户才能登录 TrueNAS Web 界面。…

[Linux]重定向

一、struct file内核对象 struct file是在内核中创建,专门用来管理被打开文件的结构体。struct file中包含了打开文件的所有属性,文件的操作方法集以及文件缓冲区(无论读写,我们都需要先将数据加载到文件缓冲区中。)等…

#centos7搭建php8+nginx环境#

场景:为了实现上传的pdf文件转成png图片,需要搭建一个php8nginx的运行环境,最后安装imagic扩展 安装顺序 php-> linux-> imagemagick -> ghostscript -> imagick 一:安装phpnginx环境 1、安装remi扩展源 remi源是Remi repository是包含最新…

消安一体化解决方案

前言 随着信息技术的飞速发展,物联网技术正以前所未有的速度渗透至生活的各个角落,其中智能家居作为物联网技术应用的重要场景之一,不仅提升了居住的便捷性,更是对家庭安全提出了新的挑战和要求。在这样的背景下,将消防…

161.二叉树:在每个树中找最大值(力扣)

代码解决 /*** Definition for a binary tree node.* struct TreeNode {* int val;* TreeNode *left;* TreeNode *right;* TreeNode() : val(0), left(nullptr), right(nullptr) {}* TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}* Tre…

易联众智能自动办理平台,AI赋能让数字政务服务“触手可及”

“城乡居民参保怎么办”“要去XX省工作了,帮我办理异地就医备案”……通过口语化的文字、语音提问,易联众智能自动办理平台的AI助理都可以准确理解对话,并依据政策文件给出详细回答,人机对话像聊天一样轻松。 近日,宁德市民王先生高兴地说:“过去办理医保业务不懂流程,容易走弯…

第22讲:文件操作

文章目录 第22讲:文件操作1. 为什么使用文件2. 什么是文件2.1 程序文件2.2 数据文件2.3 文件名 3. 二进制文件和文本文件?4. 文件的打开和关闭4.1 流和标准流4.1.1 流4.1.2 标准流 4.2 文件指针4.3 文件的打开和关闭 5. 文件的顺序读写5.1 顺序读写函数介…

文刻创作ai工具

文刻创作AI工具是一种利用人工智能技术来辅助创作文本的工具。 领取激活方式:https://qvfbz6lhqnd.feishu.cn/wiki/HsY4wmoffiNp4FkB2AbcpL4tn6d 它能够生成、修改、编辑和优化各种类型的文本内容,包括文章、故事、诗歌、广告文案等。 通过分析大量的文…

比较好的Python课程

最近在学习夜曲编程的Python进阶课程——办公效率化;夜曲编程之前有推出一款学习Python的入门课程,在手机端和电脑端都可以学习的,如果没有时间在手机端学习都很好的。每节课程学习下来,可以收集到Python入门的知识卡片&#xff0…

全志H616 通过Cedrus和v4l2_request API实现硬件编解码加速(香橙派zero2)

编译安装或加载cedrus驱动模块,加载v4l2-mem2mem Sunxi-Cedrus 致力于为全志 SoC 提供硬件加速的视频解码和编码支持,并将其引入主线 Linux 内核。此外,还为典型的基于 GNU/Linux 的系统提供了与内核驱动程序接口的其他用户空间组件。 Sunx…

Java使用Hutool工具类轻松生成验证码

👩🏽‍💻个人主页:阿木木AEcru 🔥 系列专栏:《Docker容器化部署系列》 《Java每日面筋》 💹每一次技术突破,都是对自我能力的挑战和超越。 目录 一、效果展示1.1 扭曲干扰的验证码1.…

C++学习第十一天——vector的模拟实现

✨ 生于火焰,落俗不可避免,但浪漫至死不渝 🌏 📃个人主页:island1314 🔥个人专栏:C学习 🚀 欢迎关注:👍点赞 &…