SpringBoot添加对静态文件css/html/jpg等的直接访问的支持

时间:2020-12-07 13:03:04

2019/3/2更新

使用这个方法时候如果遇到`LazyInitializationException`,请按照如下方法解决:

一、在你的项目启动类中加入这个方法

    @Bean
    public OpenEntityManagerInViewFilter openEntityManagerInViewFilter(){
        return new OpenEntityManagerInViewFilter();
    }

 

二、在你的项目配置文件(比如:application.properties)中加入

spring.jpa.open-in-view=true

 

 ----原文----

 

解决对策

解决方法是配置WebMvcXXX(多说一句WebMvcConfigurerAdapter在Spring新版本已经过时,因此再看相应的解决方案请慎重)比如新建一个文件WebStaticResourceConfigure.java,然后码上如下代码:

 @Configuration
public class WebStaticResourceConfigure extends WebMvcConfigurationSupport {

    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry){
        /*
         * * 根据系统标识来判断合适的文件路径格式
         * * 下面将路径中的/img/XX.jpg映射到文件系统中的D:/static/img/XX.jpg或者Unix下的/var/static/img/XX.jpg
         * * 如果需要映射的文件夹是在项目中的,比如resource/static,
         *   可以使用.addResourceLocations("classpath:/static/")
         */
        String os = System.getProperty("os.name");
        final String windowsFlag = "win";
        // windows
        if (os.toLowerCase().startsWith(windowsFlag)){  
            registry.addResourceHandler("/img/**")
                    .addResourceLocations("file:D:\\static\\img\\");
        //linux 和mac
        } else {
            registry.addResourceHandler("/img/**")
                    .addResourceLocations("file:\\var\\static\\img\\");
        }
    }
}

 

 如果没有解决你的问题,请不要放弃,继续在互联网上探索了。

 

五、引用及致谢

我只是知识的搬运工,这篇文章离不开他们:

[1] https://*.com/questions/41691770/spring-boot-unabe-to-serve-static-image-from-resource-folder

[2] https://*.com/questions/27381781/java-spring-boot-how-to-map-my-app-root-to-index-html

[3] https://blog.csdn.net/panxiaolan/article/details/81115120

  以及其它参考过的网页