为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

慕仙森 2022-10-20 17:03:30
当我使用 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 或其他类加载器资源。


查看完整回答
反对 回复 2022-10-20
?
达令说

TA贡献1821条经验 获得超6个赞

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



查看完整回答
反对 回复 2022-10-20
  • 2 回答
  • 0 关注
  • 106 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信