使用Spring boot

时间:2017-06-13 15:22:51

标签: java spring maven spring-mvc spring-boot

我看了一遍,我无法弄清楚我在打包的spring-boot jar文件中尝试提供index.html页面的方式出错了。这是我的应用结构:

package structure

当我运行mvn clean install时,它正确打包jar并实际将index.html文件放入jar中的静态文件夹中。

这是我的MVC Conf:

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

我做得不好吗?

4 个答案:

答案 0 :(得分:2)

尝试添加" classpath"到资源位置,

registry.addResourceHandler("/static/**").addResourceLocations("classpath:/static/");

答案 1 :(得分:2)

好的,我感谢多个来源的帮助!这是我做的,所以它可以帮助别人:

1)在POM中添加此资源。我仍然不确定为什么我需要这个,但如果没有这个我的应用程序将无法提供。 Spring引导应该自动执行此操作,但显然不是。

<resources>
    <resource>
        <directory>src/main/resources/static</directory>
        <targetPath>static</targetPath>
    </resource>
</resources>

2)在我的MVC配置中,我添加了这个(类似于下面的答案):

    private static final String[] CLASSPATH_RESOURCE_LOCATIONS = {
        "classpath:/META-INF/resources/", "classpath:/resources/",
        "classpath:/static/", "classpath:/public/" };

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

添加这两件事后,我的应用程序开始提供文件!

答案 2 :(得分:0)

我相信您应该阅读此内容,如何提供静态内容:

http://docs.spring.io/spring-boot/docs/1.4.2.RELEASE/reference/htmlsingle/#boot-features-spring-mvc-static-content

总而言之,您的浏览器正在缓存您的静态资源,例如CSS文件或html文件。

为了打破这种行为,请先尝试清理浏览器缓存,然后在google chrome中进行设置,然后清除浏览数据。

其次,将这些行添加到application.properties文件中以便破坏缓存:

spring.resources.chain.strategy.content.enabled=true
spring.resources.chain.strategy.content.paths=/**

或添加此内容:

spring.resources.chain.strategy.fixed.enabled=true
spring.resources.chain.strategy.fixed.paths=/**
spring.resources.chain.strategy.fixed.version=v12

答案 3 :(得分:0)

在春季启动项目中,您可以通过扩展 WebMvcConfigurerAdapter 并覆盖 addResourceHandlers 来实现此功能

    @SpringBootApplication
    public class DemoApplication extends WebMvcConfigurerAdapter {

        public static void main(String[] args) {
            SpringApplication.run(DemoApplication.class, args);
        }

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

索引页面可在http://localhost:8080/static/index.html

上访问