码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 第六节:如何解决@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 指定多个包进行扫描:

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

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

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

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

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

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

    1. @Configuration
    2. @ComponentScan("cn.wcyf.wcai.pojo")
    3. public class AppConfig {
    4. }

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

    运行效果如下:

    参考

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

    《SpringBoot企业级应用开发》

  • 相关阅读:
    Java代码实现不同应用系统中数据同步程序
    linux下安装工具——yum
    某快递公司Java一面
    解密Prompt系列11. 小模型也能COT-先天不足后天来补
    2022.07.04
    影视行业应该如何利用软文进行宣传?媒介盒子告诉你
    计算机毕业设计Java创新学分认证系统(源码+系统+mysql数据库+lw文档)
    0037__一文了解嵌入式系统中常用外围接口
    STM32物联网项目-DAC输出模拟量以及正弦波
    python setup.py build develop时出现问题
  • 原文地址:https://blog.csdn.net/qq_21004057/article/details/140054574
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号