第六节:如何解决@ComponentScan只能扫描当前包及子包(自学Spring boot 3.x的第一天)

news2024/10/5 6:30:19

大家好,我是网创有方,继上节咱们使用了@Component和@ComponentScan的方法实现了获取IOC容器中的Bean,但是存在一个问题,就是必须把AppConfig和要扫描的bean类放在同一个目录下,这样就导致了AppConfig类和bean类在同一个目录下,这对整个项目的结构框架来说是不合理的,没有人会这样做,所以config包和pojo包就应该分开。这节就来解决下这个问题。同样这节实现打印出IOC获取到的bean的属性。

第五节:如何使用其他注解方式从IOC中获取bean(自学Spring boot 3.x的第一天)-CSDN博客

@ComponentScan 注解在 Spring 框架中用于配置组件扫描的指令,它告诉 Spring 在哪些包中查找被 @Component、@Service、@Repository、@Controller 等注解标记的类,并将它们注册为 Spring 应用上下文中的 bean。 默认情况下,@ComponentScan 会扫描定义该注解的类所在的包以及其子包。但是,@ComponentScan 并不局限于只扫描当前包。你可以通过 basePackages 或 basePackageClasses 属性来指定其他包进行扫描。 例如:

1.使用 basePackages 指定多个包进行扫描:

@Configuration  
@ComponentScan(basePackages = {"com.example.package1", "com.example.package2"})  
public class AppConfig {  
    // ...  
}

2.使用 basePackageClasses 指定多个包(通过指定一个包中的类来间接指定包):

@Configuration  
@ComponentScan(basePackageClasses = {Package1Marker.class, Package2Marker.class})  
public class AppConfig {  
    // ...  
}  
  
// 假设这两个类分别位于 com.example.package1 和 com.example.package2 包中  
class Package1Marker {  
    // 无需任何方法或属性,只是一个标记  
}  
  
class Package2Marker {  
    // 无需任何方法或属性,只是一个标记  
}

在上述例子中,@ComponentScan 会扫描 com.example.package1 和 com.example.package2 这两个包以及它们的子包中的组件。

通过上面的方式虽然可以实现,但是如果bean来太多了,就麻烦了。所以直接通过下面方式实现对其他包下的类的扫描。

3.  在@ComponentScan后面紧跟要扫描的包,这样会自动扫描下面的类。

@Configuration
@ComponentScan("cn.wcyf.wcai.pojo")
public class AppConfig {


}

项目的框架如下图。Student类又被移回到pojo实体类包下,看起来清晰明朗。

运行效果如下:

参考

《深入浅出Spring-boot 3.x》

《SpringBoot企业级应用开发》

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

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

相关文章

T4打卡 学习笔记

所用环境 ● 语言环境:Python3.11 ● 编译器:jupyter notebook ● 深度学习框架:TensorFlow2.16.1 ● 显卡(GPU):NVIDIA GeForce RTX 2070 设置GPU from tensorflow import keras from tensorflow.keras…

Dahlia Hart: Stylized Casual Character(休闲角色模型)

此包包含两个发型和两个服装,每个都有多种颜色选择。每个发型都适合与物理资源一起使用,并包含各种表情和音素混合形状。 下载:​​Unity资源商店链接资源下载链接 效果图:

自适应IT互联网营销企业网站pbootcms模板

模板介绍 一款蓝色自适应IT互联网营销企业网站pbootcms模板,该模板采用响应式设计,可自适应手机端,适合一切网络技术公司、互联网IT行业,源码下载,为您提供了便捷哦。 模板截图 源码下载 自适应IT互联网营销企业网站…

C++精解【9】

文章目录 大整数GMP概述GMP安装 [cygwin](https://cygwin.com/install.html)安装 gmpexample Eigen基本属性和运算 大整数GMP 概述 GMP GMP是一个用于任意精度算术的免费库,可对有符号整数、有理数和浮点数进行操作。除了运行GMP的机器的可用内存所暗示的精度外&…

【建设方案】工单系统建设方案(Word原件)

工单管理系统解决方案 1、工单创建:根据告警信息创建工单。 2、工单管理:列表形式展示所有工单信息及进度状态。 3、工单处理:对接收的工单进行处理反馈。 4、工单催办:根据工单时效自动发送工单催办消息通知。 5、工单归档&#…

鲲鹏arm服务器部署paddleOCR

1. 部署环境信息查看 1.1 操作系统 $ cat /etc/os-release PRETTY_NAME"UnionTech OS Server 20" NAME"UnionTech OS Server 20" VERSION_ID"20" VERSION"20" ID"uos" PLATFORM_ID"platform:uel20" HOME_URL&q…

数据结构与算法笔记:高级篇 - 搜索:如何用 A* 搜索算法实现游戏中的寻路功能?

概述 魔兽世界、仙剑奇侠传这类 MMRPG 游戏,不知道你玩过没有?在这些游戏中,有一个非常重要的功能,那就是任务角色自动寻路。当任务处于游戏地图中的某个位置时,我们用鼠标点击另外一个相对较远的位置,任务…

Java学习 - 布隆过滤器

前置需求 需求 已经有50亿个电话号码,现在给出10万个电话号码,如何快速准确地判断这些电话号码是否已经存在? 参考方案 通过数据库查询:比如MySQL,性能不行,速度太慢将数据先放进内存:50亿*8字…

用pycharm进行python爬虫的步骤

使用 pycharm 进行 python 爬虫的步骤:下载并安装 pycharm。创建一个新项目。安装 requests 和 beautifulsoup 库。编写爬虫脚本,包括获取页面内容、解析 html 和提取数据的代码。运行爬虫脚本。保存和处理提取到的数据。 用 PyCharm 进行 Python 爬虫的…

机器人控制系列教程之Simulink中模型搭建(1)

机器人模型获取 接上期:机器人控制系列教程之控制理论概述,文中详细讲解了如何通过Solidworks软件导出URDF格式的文件。文末提到了若需要将其导入到Simulink中可在命令行中输入smimport(urdf/S_Robot_urdf.urdf),MATLAB将自动打开Simulink以…

TCP单进程循环服务器程序与单进程客户端程序

实验目的 理解并掌握以下内容: 网络进程标识(即套接字地址)在Linux中的数据结构与地址转换函数。网络字节序与主机字节序的定义、转换以及相关函数在网络编程中的应用。数据结构内存对齐的基本规则,以及基于数据结构构建PDU的基本方法。TCP单进程循环服务器与单进程客户端的…

【ai】ubuntu18.04 找不到 nvcc --version问题

nvcc --version显示command not found问题 这个是cuda 库: windows安装了12.5 : 参考大神:解决nvcc --version显示command not found问题 原文链接:https://blog.csdn.net/Flying_sfeng/article/details/103343813 /usr/local/cuda/lib64 与 /usr/local/cuda-11.3/lib64 完…

【机器学习300问】133、什么是降维?有哪些降维的方法?

假如你有一本非常厚的书,每一章代表一个特征维度,而书中的故事(数据点)在每个章节(维度)都有详细的描述。但是,读者(模型)发现很难理解和记忆这个复杂的故事,…

视频监控业务平台LntonCVS国标视频综合管理平台功能及技术优势

随着安防行业的快速进步,传统的视频监控平台正在与先进的技术和互联网技术融合,包括5G通信、GIS、大数据、云计算、边缘计算、AI识别、智能分析和视频直播等。这些技术的整合形成了综合性视频监控管理平台,具备集中管理、多级联网共享、互联互…

在 UBUNTU 22.04 上逐步构建 Postal SMTP 服务器

构建 Postal SMTP 服务器来发送批量电子邮件是电子邮件营销人员的不错选择。Postal 功能非常强大,并拥有大量开发人员的支持。它是一个用 JavaScript 和 Ruby 编写的开源邮件服务器脚本。它可用于构建内部 SMTP 服务器,就像 Mailgun、Sendgrid、Mailchim…

数字信号处理实验四(FIR数字滤波器设计)

FIR数字滤波器设计(2学时) 要求: 设计一个最小阶次的低通FIR数字滤波器,性能指标为:通带0Hz~1500Hz,阻带截止频率2000Hz,通带波动不大于1%,阻带波动不大于1%,采样频率为8…

JeecgBoot新建模块

引言 jeecg-boot设置了demo, system等默认模块。在二次开发中,常常需要进行模块扩展。比如新增一个订单模块或支付模块。如何准确的新增模块,在此文进行记录。 步骤 新建模块 在项目点击右键,新建模块。 如下图。 注意:报名需…

arco disign vue 日期组件的样式穿透

问题描述: 对日期组件进行样式穿透. 原因分析: 如图,日期组件被展开时它默认将dom元素挂载到body下, 我们的页面在idroot的div 里层, 里层想要穿透外层是万万行不通的. 解决问题: 其实官网提供了参数,但是并没有提供例子, 只能自己摸索着过河. 对于日期组件穿透样式,我们能…

来自Claude官方的提示词库,支持中文!建议收藏!

大家好,我是木易,一个持续关注AI领域的互联网技术产品经理,国内Top2本科,美国Top10 CS研究生,MBA。我坚信AI是普通人变强的“外挂”,所以创建了“AI信息Gap”这个公众号,专注于分享AI全维度知识,包括但不限于AI科普,AI工具测评,AI效率提升,AI行业洞察。关注我,AI之…

KV260视觉AI套件--开箱报告

目录 1. 简介 2. 与 Zynq 的渊源 3. 官方的入门步骤 4. 总结 1. 简介 传统的ARMFPGA或DSPFPGA控制方案在软件、逻辑、硬件以及系统工程的协同调试中,往往需要团队成员之间严格按照预定计划和接口规范进行分工合作,这不仅增加了测试过程的复杂性&…