首页 文章

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

提问于
浏览
1

破解这个 . 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.当我 remove @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 回答

  • 1

    在你提到的_1108566中,它说:

    如果要完全控制Spring MVC,可以使用@EnableWebMvc添加自己的@Configuration注释 .

    您应该尝试在配置中使用 @EnableWebMvc 而不是Spring启动应用程序 . 在这个_1108568中有一个例子 .

    启用MVC Java Config或MVC XML命名空间要启用MVC Java配置,请将注释@EnableWebMvc添加到@Configuration类之一:@Configuration
    @EnableWebMvc
    公共类WebConfig {
    }

    在这些例子中:

    我希望这能帮到您 .

  • 1

    您应该使用ResourceHandlers配置 ViewResolver 之类的内容 . 检查this

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

相关问题