关于component-scan中base-package包含通配符的问题探究

关于component-scan中base-package包含通配符的问题探究今天在配置Spring的component-scan时,发现了一个有趣的问题。就是在指定base-package时,如果使用了星号通配符*,有时会出现类扫描不到的情况。下面研究一下这个问题。先介绍一下项目结构: 为了演示,我在java文件夹下创建名为controller的包,并在该包下创建了一个名为IndexController的类。如图所示: 先来看正常情况: 在Spring配置…

大家好,又见面了,我是你们的朋友全栈君。

今天在配置Spring的component-scan时,发现了一个有趣的问题。就是在指定base-package时,如果使用了星号通配符*,有时会出现类扫描不到的情况。下面研究一下这个问题。

先介绍一下项目结构: 
为了演示,我在java文件夹下创建名为controller的包,并在该包下创建了一个名为IndexController的类。如图所示: 
关于component-scan中base-package包含通配符的问题探究

先来看正常情况: 
在Spring配置文件中配置Component-Scan: 
<context:component-scan base-package=”controller” /> 
启动项目,访问localhost:8080/index.do,结果正常。 

关于component-scan中base-package包含通配符的问题探究
但,当我把component-scan配置成这样时: 
<context:component-scan base-package=”controller.*” /> 
出现了404,说明Spring没有扫描到我的Controller,所以无法处理我们的请求。 

关于component-scan中base-package包含通配符的问题探究
但,当我把component-scan配置成这样时: 
<context:component-scan base-package=”controller.**” /> 
又一切正常了。

这是为啥呢,我们打个断点看一下: 
base-package=”controller”时,可见packageSearchPath为”classpath*:controller/**/*.class“: 

关于component-scan中base-package包含通配符的问题探究
base-package=”controller.*“时,可见packageSearchPath为”classpath*:controller/*/**/*.class”: 

关于component-scan中base-package包含通配符的问题探究
base-package=”controller.**“时,可见packageSearchPath为”classpath*:controller/**/**/*.class“: 

关于component-scan中base-package包含通配符的问题探究
综上, 可以分析出,**匹配任意class文件和包,而*只能匹配包,因此无法扫描到包下的类,因此也就无法被Spring管理。
——————— 
作者:陈夏明 
原文地址:https://blog.csdn.net/u012325167/article/details/75388990 
 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/147219.html原文链接:https://javaforall.net

(0)
上一篇 2022年6月13日 下午7:36
下一篇 2022年6月13日 下午7:36


相关推荐

  • markdown编辑器使用方法_写markdown的软件

    markdown编辑器使用方法_写markdown的软件Markdown常用编辑

    2022年4月21日
    33
  • tracker服务器地址_rack服务器

    tracker服务器地址_rack服务器tracker服务器内容精选换一换云审计服务支持删除已创建的追踪器。删除追踪器对已有的操作记录没有影响,当您重新开通云审计服务后,依旧可以查看已有的操作记录。DELETE/v1.0/{project_id}/tracker无无无请参见错误码。云审计服务目前仅支持删除已创建的数据类追踪器。删除追踪器对已有的操作记录没有影响,当您重新开通云审计服务后,依旧可以查看已有的操作记录。DELETE/…

    2022年10月1日
    7
  • 一个非常聪明的盗号链接[通俗易懂]

    一个非常聪明的盗号链接[通俗易懂]某天,一个很久没联系的同学在QQ上发个信息给我:这个哪个女的?小狼果断点了,哇,是一个非主流女孩的个人空间(这个空间是存在的,只是一个非主流女孩的图片,至于是确有此人还是由网上图片构成的就没有去研究

    2022年7月1日
    44
  • 装饰器模式的使用总结

    装饰器模式的使用总结一 装饰器模式的概念及怎么用 1 基本概念和功能 装饰器模式能够实现从一个对象的外部来给对象添加功能 有非常灵活的扩展性 可以在对原来的代码毫无修改的前提下 为对象添加新功能 除此之外 装饰器模式还能够实现对象的动态组合 借此我们可以很灵活地给动态组合的对象 匹配所需要的功能 2 举例分析 假设现在有这样一个需求 让你设计一个装修功能 用户可以动态选择不同的装修功能来装饰自己的房子

    2026年3月20日
    2
  • Chrome performance_开发者模式玩游戏流畅

    Chrome performance_开发者模式玩游戏流畅主要有4方面:(对照下图)1.控制按钮。2.overview。页面性能的高级汇总(FPS:帧率,CPU:CPU占用,NET:网络请求)3.火焰图。CPU堆叠追踪的可视化(左侧名称是主线程的各种事件,Network:网络请求详细情况)4.数据统计。以图表的形式汇总数据(summary:统计报表,Bottom-Up:事件时长顺序,CallTree:事件调用顺序,Eventlog:事件发生的……

    2025年7月9日
    8
  • 正版哈希值校验工具_电子证据哈希值校验

    正版哈希值校验工具_电子证据哈希值校验介绍常用的两个:1、Hash1.04特点:小巧方便快速。缺点:需要自己对比校验,不能粘贴哈希值自行校验对错。图片是汉化版的界面,原作者RobinKeir有个自己工具的网站就在软件标题栏的后面:http://keri.net。有兴趣的可以下载英文原版的,网速可能有点慢。2、IHasherv0.2特点:可以自行对比校验对错。缺点:没什么大缺点。看标题栏后面的网址就明白了,是m…

    2025年11月4日
    6

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号