java配置文件扫描包_spring的classpath通配符加载配置文件与对多个包进行扫描

classpath:的写法

classpath:app-Beans.xml

说明:无通配符,必须完全匹配

classpath:App?-Beans.xml

说明:匹配一个字符,例如 App1-Beans.xml 、 App2-Beans.xml

classpath:user/*/Base-Beans.xml

说明:匹配零个或多个字符串(只针对名称,不匹配目录分隔符等),例如:user/a/Base-Beans.xml 、 user/b/Base-Beans.xml ,但是不匹配 user/Base-Beans.xml

classpath:user/**/Base-Beans.xml

说明:匹配路径中的零个或多个目录,例如:user/a/ab/abc/Base-Beans.xml,同时也能匹配 user/Base-Beans.xml

classpath:**/*-Beans.xml

说明:表示在所有的类路径中查找和加载文件名以“-Beans.xml”结尾的配置文件,但重复的文件名只加载其中一个,视加载顺序决定

classpath*:user/**/*-Beans.xml

classpath*:**/*-Beans.xml

说明:“classpath*:”表示加载多个资源文件,即使重名也会被加载,比如app1.jar中有一个config-Beans.xml,app2.jar中也有一个config-Beans.xml,这个时候,两个都会加载。

classpath: 与  classpath*:区别

Spring可以通过指定classpath*:与classpath:前缀加路径的方式从classpath加载文件;如bean的定义文件classpath*:的出现是为了从多个jar文件中加载相同的文件;classpath:只能加载找到的第一个文件.

1. java web项目中的classpath

1.1 classpath的含义:

classpath是指 WEB-INF文件夹下的classes目录 ,对应为项目src目录文件编译之后的文件夹。是一个定位资源的入口。

1.2 classpath中文件优先访问级别

lib和classes下文件访问优先级的问题: lib>classes

1.3 classpath: 和 classpath*:区别

classpath:只会到你的class路径中查找找文件;

classpath的查找范围应该是/WEB-INF/classes,资源文件的缺省路径为src/main/resources,Maven在打包成war文件的时候,会将src/main/resources的资源文件复制到/WEB-INF/classes目录。

如果要加载的资源, 不在当前ClassLoader的路径里,那么用classpath:前缀是找不到的, 这种情况下就需要使用classpath*:前缀

classpath*:不仅包含class路径,还包括jar文件中(class路径)进行查找,会从所有的calsspath中加载。当项目中有多个classpath路径,并同时加载多个classpath路径下的文件,就发挥了作用,如果不加,则表示仅仅加载第一个classpath路径。

在多个classpath中存在同名资源,都需要加载, 那么用classpath:只会加载第一个,这种情况下也需要用classpath*:前缀

注意:用classpath*:需要遍历所有的classpath,所以加载速度是很慢的,因此,在规划的时候,应该尽可能规划好资源文件所在的路径,尽量避免使用 classpath*

**/:表示任意目录;

**/applicationContext-*.xml:表示任意目录下的以applicationContext-开头的XML文件。

2. maven项目中的classpath

2.1 maven项目中对应的classpath

maven项目分为src/main/java目录、src/main/resources目录,src/test/java目录,/peis-src/test/resources目录:

64eabd1675354f788cf0732252f34a2d.webp

maven目录

6116b3c9554f4fa5b44374020404f717.webp

编译文件目录

其中src/main/java目录、src/main/resources目录对应到项目的target\classes目录,如果在src/main目录调用classpath,则class的根目录为target\classes;

src/test/java目录,src/test/resources目录对应到test-classes目录,如果在src/test/java目录调用classpath,则class的根目录为target\test-classes;

扫描包时如果有多个包则用";"分开

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值