关于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 
 

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

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • 这些最常用的Linux命令,每一条都应该学会!

    点击上方“全栈程序员社区”,星标公众号 重磅干货,第一时间送达 作者:陈良 cnblogs.com/chenliangchaoshuai/p/11827383.html linux…

  • .NET设计模式访问者模式

    一.访问者模式的定义:表示一个作用于某对象结构中的各元素的操作。它使你可以在不改变各元素类的前提下定义作用于这些元素的新操作。二.访问者模式的结构和角色:1.Visitor抽象访问者角色,为该

    2021年12月24日
  • java旅游管理系统(带文档

    java旅游管理系统(带文档关注公众号,回复:java旅游管理系统,获取源码,百度云哦。不会安装,找公众号管理员

  • js的onchange(js replace函数)

    jsonpropertychange函数当一个HTML元素的属性用js改变的时候,都能通过onpropertychange来捕获。例如一个<inputname=”text1″id=”text1″/>对象的value属性被页面的脚本修改的时候,onchange无法捕获到,而onpropertychange却能够捕获。也就是说:onpropertychange事…

  • centos7怎么查看ip地址

    centos7怎么查看ip地址在Linux系统下查询CentOS7的ip地址我们输入ip查询命名ipaddr也可以输入ifconfig查看ip,但此命令会出现3个条目,centos的ip地址是ens33条目中的inet值。输入命令:ipaddr注意截图处没有看到intent使用:ifconfig命令查询结果如下:发现ens33没有inet这个属性,那么就没法通过IP地址连接虚拟机。接着来查看ens33网卡的配置:先查看一下cd/etc/sysconfig/network-scripts

    2022年10月26日
  • GB50174-2017机房标准_机房建设标准规范 2018

    GB50174-2017机房标准_机房建设标准规范 2018中华人民共和国国家标准电子计算机机房设计规范GB50174-93中华人民共和国国家标准电子计算机机房设计规范GB50174-93DesignCodeforElectronicComputerRo批准部门:中华人民共和国建设部1993年2月17日1993年9月1日实施第一章总则第1.0.1条为了使电子计算机机房设计确保电子计算机系统稳定可靠运行及保障机房工作人员有良好的工作环境,做到…

发表回复

您的电子邮箱地址不会被公开。

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