Spring Can';扩展WebMVCConfiguer后,无法从静态目录获取任何文件
我使用的依赖项包括:Spring Can';扩展WebMVCConfiguer后,无法从静态目录获取任何文件,spring,spring-boot,maven,thymeleaf,spring-boot-maven-plugin,Spring,Spring Boot,Maven,Thymeleaf,Spring Boot Maven Plugin,我使用的依赖项包括: 弹簧靴起动器 弹簧起动试验 SpringBootStarterWeb 弹簧启动装置 弹簧启动安全 thymeleaf-extras-springsecurity5 mysql连接器java spring引导启动器数据jpa 我在index.html中尝试过这些 <img src="icon/signin.svg"> <img src="/icon/signin.svg"> <img src="
- 弹簧靴起动器
- 弹簧起动试验
- SpringBootStarterWeb
- 弹簧启动装置
- 弹簧启动安全
- thymeleaf-extras-springsecurity5
- mysql连接器java
- spring引导启动器数据jpa
<img src="icon/signin.svg">
<img src="/icon/signin.svg">
<img src="./icon/signin.svg">
<img src="../static/img/icon/signin.svg">
没有成功。此外,我试图将资源目录移动到主目录,但什么也没有。有什么想法吗?您可以尝试找到答案,并链接到同一个重新措辞的问题的其他答案。由于您使用的是Spring Security,您可能需要查看您的安全配置,因为从Spring boot 2.0开始,静态资源在默认情况下是安全的当您添加
@EnableWebMvc
时,您将覆盖Spring boot的所有自动配置。这应该起作用:
@Configuration
@AutoConfigureAfter(WebMvcAutoConfiguration.class)
public class WebMvcConfig implements WebMvcConfigurer {
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("/icon/**").addResourceLocations("classpath:/static/img/icon/");
}
}
另外,我刚刚看了一下您的目录结构的图片,我确信除非我的眼睛离开,否则您的“资源”文件夹不在src/main
下。它应该就在java
文件夹的旁边:
src
|_ main
|_ java
|_ resources
结果证明了为什么这对我不好。 从Spring Boot2.0如果您使用的是@EnableWebSecurity,您必须手动定义哪些目录和文件可以访问,哪些人可以访问
@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception{
http.authorizeRequests()
.antMatchers("/**").permitAll()
...
}
...
}
在这种情况下,我让每个人都访问静态文件夹中的所有内容。在此之后,我可以通过两种方式获取signin.svg:
<img src="icon/signin.svg"> <!--Because of registry.addResourceHandler("/icon/**").addResourceLocations("classpath:/static/img/icon/"); mapping -->
<img src="img/icon/signin.svg">
<img src="icon/signin.svg"> <!--Because of registry.addResourceHandler("/icon/**").addResourceLocations("classpath:/static/img/icon/"); mapping -->
<img src="img/icon/signin.svg">