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

大家好,我是网创有方,继上节咱们使用了@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企业级应用开发》

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

C++精解【9】

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

抖音矩阵云混剪系统源码 短视频矩阵营销系统V2(全开源版)

>>>系统简述: 抖音阵营销系统多平台多账号一站式管理,一键发布作品。智能标题,关键词优化,排名查询,混剪生成原创视频,账号分组,意向客户自动采集,智能回复,多…

WEB攻防【6】——Python考点/CTF与CMS/SSTI模板注入/PYC反编译

#知识点 1、PYC文件反编译 2、python-web-SSTI 3、SSTI模板注入利用分析 SSTI 就是服务器端模板注入 (Server-Side Template Injection) 当前使用的一些框架,比如python的flask,php的tp,java的spring等一般都采用成…

【知识学习】Unity3D中Post Processing的概念及使用方法示例

Unity3D中的Post Processing(后处理)是一种在渲染管线的最后阶段对最终图像进行处理的技术。它允许开发者添加各种视觉效果,如模糊、颜色分级、镜头光晕等,以增强场景的视觉表现力。 Post Processing 的基本概念 Post Processin…

Unity【GUI】基础知识

什么是UI系统 Ul是UserInterface(用户界面)的简称系统的主要学习内容 1.UI控件的使用 2.U控件的事件响应 3.U的分辨率自适应文章目录 基础知识1、工作原理和主要作用2、基本控件1、文本和按钮控件2、多选框和单选框3、输入框和拖动条4、图片绘制和框 3、复合控件1、工具栏和…

[图解]SysML和EA建模住宅安全系统-03-现有运营领域-图标表示结构

1 00:00:01,590 --> 00:00:04,260 接下来,我们来看图17.8 2 00:00:05,590 --> 00:00:08,430 图17.8跟图17.7是一样的 3 00:00:08,440 --> 00:00:14,610 它也是描述运营领域现状的一个BDD 4 00:00:16,150 --> 00:00:18,340 但是它用图标来表示 5 00:…

2000-2022年 省、市、县三级逐年归一化植被指数NDVI

NDVI(归一化植被指数)是一种重要的遥感指数,广泛应用于植被生长状况的监测和评估。以下是对省、市、县三级逐年归一化植被指数NDVI数据的介绍: 数据简介 定义:NDVI是一种基于植被在红光和近红外波段反射特性的遥感指…

财务RPA与数字化转型——财务RPA如何促进企业的数字化转型

在数字化时代,企业面临着推动创新、提高效率的巨大挑战。RPA财务机器人作为智慧财务不可或缺的新动能,不仅能够优化财务流程,还能够在整个企业中引领数字化变革。本文金智维将深入探讨财务RPA如何成为企业数字化转型的战略利器,为…

WordPress Quiz Maker插件 SQL注入漏洞复现(CVE-2024-6028)

0x01 产品简介 WordPress Quiz Maker插件是一款功能强大的测验生成工具,旨在帮助用户轻松、快速地构建复杂的测验和考试。插件支持多种问题类型,包括单选框(MCQ)、复选框(MCQ)、下拉列表(MCQ)、文本、短文本、数字、日期等。还支持横幅(HTML)显示信息性消息、填空题…

Java应用cpu过高如何分析

1. 查看进程cpu使用情况 top 2. 根据PID查看指定进程的各线程的cpu使用情况 top -H -p PID

使用 Compose Multiplatform Media Player 实现跨平台媒体播放

使用 Compose Multiplatform Media Player 实现跨平台媒体播放 在跨平台开发中,媒体播放功能是一个常见且重要的需求。Compose Multiplatform Media Player 是一个专为 Compose Multiplatform 项目设计的强大媒体播放器库,它可以在 iOS 和 Android 平台上无缝实现视频播放、…

小程序驾校预约系统的设计

管理员账户功能包括:系统首页,个人中心,学员管理,教练管理,驾校信息管理,驾校车辆管理,教练预约管理,考试信息管理 微信端账号功能包括:系统首页,驾校信息&am…

python--基础篇--正则表达式--py脚本--题目解答

文章目录 验证输入用户名和QQ号是否有效并给出对应的提示信息从一段文字中提取出国内手机号码替换字符串中的不良内容拆分长字符串 验证输入用户名和QQ号是否有效并给出对应的提示信息 """ 验证输入用户名和QQ号是否有效并给出对应的提示信息要求:用…

智能农业技术:物联网、无人机与机器人引领的绿色革命

在这个信息化与智能化并行的时代,农业——这个最古老的人类产业,正经历一场前所未有的科技变革。物联网(IoT)、无人机(UAV)和机器人技术的深度融合,正逐步构建起一个高效、精准、可持续的现代农…

华为HCIP Datacom H12-821 卷18

1.问答题 (拖拽题)如图所示,请根据 DHCPv6 的四歩交互流程, 将报文按照顺序拖拽到相应的位置 参考答案: 1--solicit ,2--advertise , 3--equest, 4--reply 解析: DHCPv6的报文交互流程,类似于V4,先组播发现,服

静态链表详解(C语言版)

顺序表和链表的优缺点 顺序表和链表是两种基本的线性数据结构,它们各自有不同的优缺点,适用于不同的应用场景。 顺序表(Sequential List,通常指数组) 优点: 随机访问:可以通过索引快速访问任…

【前端】简易化看板

【前端】简易化看板 项目简介 看板分为三个模块,分别是待办,正在做,已做完三个部分。每个事件采取"卡片"式设计,支持任务间拖拽,删除等操作。 代码 import React, { useState } from react; import { Car…

如何有效保护生物医药企业隔离网数据导出的安全性?

生物医药企业的核心数据保护至关重要,企业为了保护内部的核心数据,会将网络进行物理隔离,将企业内⽹与外⽹隔离。⽹络隔离后,仍存在重要数据从内网导出至外网的隔离网数据导出需求。以下是一些需要特别保护的核心数据类型&#xf…

【图论 树 深度优先搜索】2246. 相邻字符不同的最长路径

本文涉及知识点 图论 树 图论知识汇总 深度优先搜索汇总 LeetCode 2246. 相邻字符不同的最长路径 给你一棵 树(即一个连通、无向、无环图),根节点是节点 0 ,这棵树由编号从 0 到 n - 1 的 n 个节点组成。用下标从 0 开始、长度…

Python学习笔记五

1.当循环执行完整后&#xff0c;就会执行else里面的代码 s0 i1 while i<100:sii1 else:print(s) 当循环不完整就会如下 s0 i1 while i<100:sii1if s6:break; else:print(s) 2. 实现密码匹配&#xff0c;可以输入三次&#xff0c;若输入三次错误会退出&#xff0c;或者输…