关于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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 详解卷积反卷积操作

    详解卷积反卷积操作TransposedConvolution,FractionallyStridedConvolutionorDeconvolution Postedon 2016-10-29反卷积(Deconvolution)的概念第一次出现是Zeiler在2010年发表的论文Deconvolutionalnetworks中,但是并没有指定反卷积这个名字

    2022年5月17日
    49
  • Vue 跨域配置「建议收藏」

    Vue 跨域配置「建议收藏」在package.json同级目录下新建文件vue.config.js;内容如下:module.exports={//自行复制黏贴proxyTable:{‘/java’:{//以/java开头的地址会被替换成下面的target,/java本身会被重写成下面的pathRewritetarget:’http://zaxytest.ciih.net/java’,//后台apichangeOrigin:t

    2022年7月23日
    8
  • webrtc技术原理_webrtc开源项目

    webrtc技术原理_webrtc开源项目一、概述webrtc冗余打包方式有三种:Red(rfc2198)、Ulpfec(rfc5109)、Flexfec(草案)。其中Red和Ulpfec要成对使用。二、RedFEC简单将老报文打包到新包上。如下图所示,冗余度为1时,RFC2198打包情况:这种方法在音视频领域几乎不使用,因为冗余包只能保护特定一个报文,这种方法带宽占用量很大,恢复能力有限,性价比很低。只是早期的T38……

    2022年8月11日
    6
  • 环形队列的实现(什么是环形队列)

    环形队列可以使用数组实现,也可以使用循环链表实现。packagewww.bittech;publicclassMyCircularQueue{privateintfront;//队列头privateintrear;//队列尾privateintusedSize;//数据个数privateint[]elem;//数组…

    2022年4月18日
    60
  • Sereja and Suffixes

    Sereja and Suffixes J- SerejaandSuffixesTimeLimit:1000MS     MemoryLimit:262144KB     64bitIOFormat:%I64d&amp;%I64uSubmit StatusDescriptionSerejahasanarray a,consistingof n integers a1, a2, …, …

    2025年7月5日
    2
  • WiFi曝Krack重大漏洞,6大措施应对威胁!

    WiFi曝Krack重大漏洞,6大措施应对威胁!为什么80%的码农都做不了架构师?>>>…

    2022年5月1日
    46

发表回复

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

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