当我使用 spring boot 横幅配置文件时,我发现:有用:spring.banner.location=classpath:banner.txt不工作:spring.banner.location=classpath*:banner.txt那么 classpath: 和 classpath*: 之间有什么区别?
2 回答
UYOU
TA贡献1878条经验 获得超4个赞
来自 Spring 文档
通配符类路径依赖于底层类加载器的 getResources() 方法。由于现在大多数应用程序服务器都提供自己的类加载器实现,因此行为可能会有所不同,尤其是在处理 jar 文件时。检查 classpath* 是否有效的一个简单测试是使用类加载器从类路径上的 jar 中加载文件:getClass().getClassLoader().getResources("")。尝试使用具有相同名称但位于两个不同位置的文件进行此测试。如果返回不适当的结果,请检查应用程序服务器文档以获取可能影响类加载器行为的设置。
所以classPath是为了从当前类加载器加载资源(只是为了理解不会读取jar或其他项目依赖下的资源)
classpath* 将做 jar 或其他类加载器资源。
达令说
TA贡献1821条经验 获得超6个赞
首先是Spring boot在源码中显示banner。可以在SpringApplication.class中找到代码,printBanner方法是用来显示banner的。就像mallikarjun说的classPath是从当前类加载器中加载资源(简单理解下不会读取资源) jar 或其他项目依赖项)classpath* 将执行 jar 或其他类加载器资源。如果你使用 classpath*:banner.txt 会在 jar 中找到。
添加回答
举报
0/150
提交
取消