一尘不染

Spring Boot应用程序打包到jar中后不提供静态资源

spring-boot

我有一个通过ide或命令行启动时运行良好的应用程序:mvn spring-
boot:run。但是,当我将其打包到jar中时,无法访问静态资源(找不到404)。我不想将静态文件存储在资源池中,因此我不必每次需要更改静态文件时都重新加载服务器。所以我在pom.xml中使用了这个插件:

              <plugin>
                <artifactId>maven-resources-plugin</artifactId>
                <version>2.6</version>
                <executions>
                    <execution>
                        <id>copy-resources</id>
                        <phase>validate</phase>
                        <goals>
                            <goal>copy-resources</goal>
                        </goals>
                        <configuration>
                            <outputDirectory>${basedir}/target/classes/static</outputDirectory>
                            <resources>
                                <resource>
                                    <directory>src/main/webapp</directory>
                                    <filtering>true</filtering>
                                </resource>
                            </resources>
                        </configuration>
                    </execution>
                </executions>
            </plugin>

我可以看到文件被复制到两个目录“静态”中。这是我对资源处理程序的配置:

    @Configuration
    @EnableWebMvc
    public class WebMvcConfig extends WebMvcConfigurerAdapter {

    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        registry.addResourceHandler("/**").addResourceLocations("/");
    }

控制器的RequestMappings工作正常,问题仅在于静态资源。


阅读 256

收藏
2020-05-30

共1个答案

一尘不染

您应该提供多个资源位置来解决:

@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
    registry.addResourceHandler("/**").addResourceLocations("/", "classpath:/static/");
}
2020-05-30