如何使用@EnableWebMvc在Spring引导中提供静态资源

时间:2018-02-15 09:33:49

标签: spring-boot

开始嘲笑这个。 documentation说:

  

默认情况下,Spring Boot将从类路径中的/ static(或/ public或/ resources或/ META-INF / resources)目录或ServletContext的根目录中提供静态内容。

最小例子:

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;

@SpringBootApplication
@EnableWebMvc
public class Main {
    public static void main(final String[] args) {
        SpringApplication.run(Main.class, args);
    }
}

创建一个目录/src/main/resources/public,在那里放置静态资源。当我运行应用程序时,我只获得404.当我删除 @EnableWebMvc资源按预期提供时。

尝试(和失败)补救措施

/**
 * @see org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter#addResourceHandlers(org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry)
 */
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
    registry.addResourceHandler("/public/**").addResourceLocations("/public/");
}

application.properties添加:

spring.mvc.static-path-pattern=/**
spring.resources.static-locations=classpath:/META-INF/resources/,classpath:/resources/,classpath:/static/,classpath:/public/

问题

所以我的问题是:当我想使用@EnableWebMvc注释时,我需要配置什么来提供静态资源?

2 个答案:

答案 0 :(得分:1)

您应该配置下面的ViewResolver以及您的ResourceHandler。查看this

@Bean
public InternalResourceViewResolver defaultViewResolver() {
   return new InternalResourceViewResolver();
}

答案 1 :(得分:1)

在你提到的documentation中,它说:

  

如果你想完全控制Spring MVC,你可以添加你的   拥有@Configuration注释的@EnableWebMvc

您应该尝试在您的配置中使用@EnableWebMvc而不是Spring启动应用程序。 这个documentation就是一个例子。

  

启用MVC Java配置或MVC XML命名空间

     

要启用MVC Java配置,请将注释@EnableWebMvc添加到其中一个   你的@Configuration课程:

@Configuration
@EnableWebMvc
public class WebConfig {
}

同样在这些例子中:

我希望这会对你有所帮助。