Spring Boot中的classpath和classpath *有什么区别?

时间:2019-04-24 08:03:07

标签: java spring classpath banner

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

有效:

spring.banner.location = classpath:banner.txt

不起作用:

spring.banner.location = classpath *:banner.txt

那么classpath:和classpath *:有什么区别?

2 个答案:

答案 0 :(得分:1)

从Spring文档

  

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

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

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

答案 1 :(得分:1)

自从Spring boot在源代码中显示标题后,首先。您可以在SpringApplication.class中找到代码,使用printBanner方法显示标题。 mallikarjun表示,classPath用于从当前类加载器加载资源(仅是为了理解不会在jar或其他项目依赖项下读取资源),classpath *将执行jar或其他类加载器资源。 如果使用classpath *:banner.txt,则会在jar中找到。