当我使用spring boot banner配置文件时,我发现:
spring.banner.location = classpath:banner.txt
spring.banner.location = classpath *:banner.txt
那么classpath:和classpath *:有什么区别?
答案 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中找到。