scanBasePackages原理和使用范例

scanBasePackages原理和使用范例

  • 目录
    • 概述
      • 需求:
    • 设计思路
    • 实现思路分析
      • 1.正文
  • 参考资料和推荐阅读

Survive by day and develop by night.
talk for import biz , show your perfect code,full busy,skip hardness,make a better result,wait for change,challenge Survive.
happy for hardess to solve denpendies.

目录

概述

需求:

设计思路

在这里插入图片描述

实现思路分析

1.正文

在非Spring Boot项目中,我们必须显式地使用@ComponentScan注解定义被扫描的包,可以通过XML文件在应用上下文中定义或在Java代码中对应用上下文定义,否则会加载不到预期的bean。

scanBasePackages是Spring框架中的一个注解,用于指定要扫描的基础包名。它通过指定的包名来扫描并自动注册Bean。

原理:
scanBasePackages注解的原理是通过Spring的ComponentScan注解来实现的。在使用scanBasePackages注解时,通常会在配置类上添加@ComponentScan注解,并指定要扫描的基础包名。Spring容器会根据指定的包名来扫描该包及其子包下的所有类,并将其注册为Bean。

使用范例:

  1. 在配置类上添加@ComponentScan注解,并指定要扫描的基础包名。
@Configuration
@ComponentScan(basePackages = "com.example")
public class AppConfig {// 配置其他Bean
}
  1. 定义一个类,并添加@Component注解,该类将被自动扫描并注册为Bean。
@Component
public class MyBean {// ...
}
  1. 在其他类中使用自动注入的方式获取该Bean。
@Service
public class MyService {@Autowiredprivate MyBean myBean;// ...
}

在上述例子中,通过scanBasePackages注解指定了要扫描的基础包名为"com.example",Spring容器会自动扫描该包及其子包下的所有类,并将加上@Component注解的类注册为Bean。在MyService类中使用@Autowired注解来自动注入MyBean对象,从而实现了依赖注入。

scanBasePackages:指定扫描的基本包的位置,可以指定多个包名进行扫描,默认是扫描入口类所在包和子包下面。
@ComponentScan 的作用就是根据定义的扫描路径,把符合扫描规则的类装配到spring容器中,

默认情况下,扫描启动类同级及其子级包下的所有文件。我们可以通过以下的测试来验证一下。

二、SpringBoot默认扫描包机制 - 原理
实际上SpringBoot启动类上面的@SpringBootApplication里面有一个@ComponentScan,它可以扫描启动类同级及其子级包下的所有文件,并且把带有@Component、@Repository、@Service、@Controller的类注册到Spring容器。

参考资料和推荐阅读

参考资料
官方文档
开源社区
博客文章
书籍推荐
1.https://blog.csdn.net/baidu_21349635/article/details/104921956

欢迎阅读,各位老铁,如果对你有帮助,点个赞加个关注呗!同时,期望各位大佬的批评指正~,如果有兴趣,可以加文末的交流群,大家一起进步哈

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

JavaWeb--JDBC

一:JDBC概述 1.概念 JDBC 就是使用Java语言操作关系型数据库的一套API 全称:( Java DataBase Connectivity ) Java 数据库连接 2.本质 官方( sun 公司)定义的一套操作所有关系型数据库的规则,即接口;各个…

【无标题】TMGM官网平台切尔西足球俱乐部合作

TMGM作为一家在三大洲均设有办事处的行业领导者,TMGM 被视为可靠的差价合约交易提供商,其重点是监管合规、技术创新与他联系➕🛰️TMGM818卓越的客户服务。 切尔西足球俱乐部在亚太地区拥有庞大的球迷群体,并在该地区建立了多种亚…

给自己的2023年写了个年终总结

哈喽,你好啊,我是雷工! 2023年的余额已经严重不足,再有5天,2023年也将成为历史中的年份了。 从网上看到很多小伙伴已经进入了年终总结的模式,我也忍不住想,今年收获了什么?又失去了…

mac iNode 断开后没网 经测试 后台还在运行

界面断开,但是连不上网:实际上可能是服务在后台还在运行 解决方式:终端执行命令 ,手动停止iNode服务 sudo /Library/StartupItems/iNodeAuthService/iNodeAuthService stop 停掉之后,有可能连不上网,断开wi…

【博图TIA-Api】通过Excel自动新建文件夹和导入FB块

【博图TIA-Api】通过Excel自动新建文件夹和导入FB块 说明思路准备获取Excel表格内文件名和FB块名等信息新建文件夹部分筛分获取的文件夹数据,去掉重复内容创建文件夹 导入FB块导出FB块的xml文件查找需要放置的文件夹导入块 说明 续上一篇文章,这次是根据…

【C语言】熟悉文件顺序读写函数

前言 本篇详细介绍了 文件顺序读写常用函数,快来看看吧~ 欢迎关注个人主页:逸狼 创造不易,可以点点赞吗~ 如有错误,欢迎指出~ 目录 前言 ​编辑 文件顺序读写函数 fgetc函数 示例 fputc函数 逐个字符写入 写入26个字母 文…

Vue全家桶:vue2+vue3全部搞懂:第六篇,了解Vue生命周期,如何一进页面就马上发送请求、渲染页面

前提,建议先学会前端几大基础:HTML、CSS、JS、Ajax,不然不好懂 这一专栏知识将一次性将vue、vue2、vue3全部讲明白 一、啥是Vue的生命周期,一个Vue生命周期有哪几个阶段? 简单来说生命周期就是从【你(new…

11:日志分析系统ELK|Elasticsearch|kibana

日志分析系统ELK|Elasticsearch|kibana 日志分析系统ELKELK概述Elasticsearch安装Elasticsearch部署Elasticsearch集群Elasticsearch插件 熟悉Elasticsearch的API调用_cat API创建 tedu 索引使用 PUT 方式增加数据查询数据修改数据删除数据 KibanaKibana…

【C++】用命名空间避免命名冲突

🌸博主主页:釉色清风🌸文章专栏:C🌸今日语录:如果神明还不帮你,说明他相信你。 🪷文章简介:这篇文章是结合谭浩强老师的书以及自己的理解,同时加入了一些例子…

武汉灰京文化:多样化推广与创新引领游戏行业

作为专业的游戏推广服务商,武汉灰京文化注重多样化的推广策略,通过与各大媒体、社交平台和游戏社区建立紧密的合作关系,为游戏企业提供全方位的推广服务。他们通过精确的广告投放、内容创作和社交媒体互动等方式,将游戏信息传播给…

单细胞Seurat - 降维与细胞标记(4)

本系列持续更新Seurat单细胞分析教程,欢迎关注! 非线形降维 Seurat 提供了几种非线性降维技术,例如 tSNE 和 UMAP,来可视化和探索这些数据集。这些算法的目标是学习数据集中的底层结构,以便将相似的细胞放在低维空间中…

Stable Cascade-ComfyUI中文生图、图生图、多图融合基础工作流分享

最近 ComfyUI对于Stable Cascade的支持越来越好了一些,官方也放出来一些工作流供参考。 这里简单分享几个比较常用的基础工作流。 (如果还没有下载模型,可以先阅读上一篇Stable Cascade升级,现在只需要两个模型) &a…