他们都包括第三方jar包的路径吗,还有就是是不是有些地方就不能用classpath*。
比如静态资源映射,我试了试加了就不能用了直接报错。我配置类继承的WebMvcConfigurationSupport。
这里静态资源映射的classpath如果不包括第三方包,那第三方包的静态资源又怎么能访问到比如swagger,knife4j。但我确实能访问到所以这里的classpath是不是比较特殊,是包括第三方包的。
他们都包括第三方jar包的路径吗,还有就是是不是有些地方就不能用classpath*。
比如静态资源映射,我试了试加了就不能用了直接报错。我配置类继承的WebMvcConfigurationSupport。
这里静态资源映射的classpath如果不包括第三方包,那第三方包的静态资源又怎么能访问到比如swagger,knife4j。但我确实能访问到所以这里的classpath是不是比较特殊,是包括第三方包的。
15 回答7.8k 阅读
2 回答8k 阅读✓ 已解决
1 回答10.1k 阅读✓ 已解决
3 回答7.5k 阅读✓ 已解决
7 回答5.2k 阅读
4 回答4k 阅读✓ 已解决
1 回答7.8k 阅读✓ 已解决
classpath: 表示从类路径中加载资源,但只加载第一个匹配的资源。
当类路径中有多个同名资源时(例如多个 JAR 包中都包含一个名为 application.properties 的文件),Spring Boot 会按照类路径的顺序加载第一个找到的资源,后续的同名资源会被忽略。
classpath*: 表示从类路径中加载所有匹配的资源。
当类路径中有多个同名资源时,Spring Boot 会加载所有匹配的资源,而不是只加载第一个。这对于需要合并多个资源文件的内容非常有用。
addResourceLocations 方法是 Spring MVC 中用于配置静态资源映射的,它接受一个或多个资源位置(String 类型的路径)。这些路径通常是具体的资源目录(如 classpath:/META-INF/resources/),而不是资源模式。Spring 的 ResourceHandlerRegistry 会将这些路径解析为 Resource 对象,并将其注册为静态资源的根路径。
当使用classpath*: 时,Spring 期望的是一个资源模式(如 classpath*:META-INF/resources/**/*.html),而不是一个目录路径。这会导致 Spring 抛出异常IllegalArgumentException或者Resource not found