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


相关推荐

  • java语言和c语言一样是面向对象的程序设计语言_面向对象和面向过程具体区别

    java语言和c语言一样是面向对象的程序设计语言_面向对象和面向过程具体区别很多初学编程的小伙伴或者想要学习编程的小白弄不清C语言和Java的区别。本文就针对萌新们尽量用通俗的语言来介绍一下我所理解的编程语言界的两大巨头。为什么说是两巨头,介绍之前我们先看一下某度搜索出来的

    2022年8月4日
  • goland 2021.5 激活码【注册码】

    goland 2021.5 激活码【注册码】,https://javaforall.net/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

    2022年3月19日
  • 罗技g933使用教程_罗技键盘如何连接电脑

    罗技g933使用教程_罗技键盘如何连接电脑罗技K380蓝牙键盘是罗技比较经典的一款外设产品,最近,罗技新推出了k380芍药白和茱萸粉两种新配色,让我们来一起看一下。其中粉色介于粉色和裸色之间,相比粉色增加了一丝灰色。极客之选本次拿到的是白色版本,颜色也非亮白,而是与粉色类似较柔和,两种颜色整体都非常素雅,因此也适合在各种场合使用。外观上,罗技K380延续了一贯的设计风格,圆润的边框设计配合圆形按键,整体看起来非常小巧精致,不同…

    2022年10月16日
  • php06 com,www.avlang111.com「建议收藏」

    php06 com,www.avlang111.com「建议收藏」DomainName:AVLANG111.COMRegistryDomainID:1858120256_DOMAIN_COM-VRSNRegistrarWHOISServer:whois.godaddy.comRegistrarURL:http://www.godaddy.comUpdateDate:2015-04-11T09:18:25ZCreationDate:20…

    2022年4月28日
  • linux上安装Openssl步骤详解

    1,查看原有系统是否已安装Opensslopensslversion-a系统已经安装了openssl,我们先安装新的版本,然后将环境配置成最新的版本。2,从openssl官网下载最新的稳定版本,https://www.openssl.org/source/当前的稳定版是openssl-fips-2.0.16.tar.gz(联邦信息处理标准(FederalInformationProc

    2022年4月3日
  • Linux系统官网下载「建议收藏」

    Linux系统官网下载「建议收藏」CentOS-6.9-x86_64-bin-DVD1.isohttp://archive.kernel.org/centos-vault/6.9/isos/x86_64/CentOS-6.9-x86_

    2022年7月1日

发表回复

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

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