spring boot中classpath和classpath *之间有什么区别?

问题描述 投票:0回答:2

当我使用spring boot banner配置文件时,我发现:

it works:

spring.banner.location =类路径:banner.txt

not working:

spring.banner.location =类路径*:banner.txt

那么classpath:和classpath *之间的区别是什么?

java spring classpath banner
2个回答
1
投票

从Spring文档

通配符类路径依赖于底层类加载器的getResources()方法。由于现在大多数应用程序服务器都提供了自己的类加载器实现,因此行为可能会有所不同,尤其是在处理jar文件时。检查classpath *是否有效的简单测试是使用类加载器从类路径中的jar中加载文件:getClass()。getClassLoader()。getResources(“”)。尝试使用具有相同名称但放在两个不同位置的文件进行此测试。如果返回了不适当的结果,请检查应用程序服务器文档以获取可能影响类加载器行为的设置。

所以classPath用于从当前类加载器加载资源(仅用于理解不会读取jar或其他项目依赖项下的资源)

classpath *将执行jar或其他类加载器资源。


1
投票

首先是Spring开始在源代码中显示横幅。你可以在SpringApplication.class中找到代码,printBanner方法用于显示banner.Like mallikarjun说classPath用于从当前类加载器加载资源(仅用于理解不会读取资源) jar或其他项目依赖项)classpath *将执行jar或其他类加载器资源。如果你使用classpath *:banner.txt会在jar中找到。

© www.soinside.com 2019 - 2024. All rights reserved.