記錄一個spring boot 靜態資源訪問問題

spring boot 只要把靜態資源放在static目錄下,理論是可以直接訪問的。

但是,今天卻發現了一個很是頭疼的問題,靜態資源放入static文件夾了,但通過瀏覽器卻是訪問不到。

網上搜索了一大堆,都是一份文章你抄來,他抄去,一點價值都沒有。

於是回到控制檯,仔細查看spring boot 啓動時輸出的日誌信息:

發現spring boot並沒有對這個URL做映射,這應該是我做了什麼自定義配置導致的spring boot 默認的自動配置被替換掉了。

於是把問題定位到了一個繼承了WebMvcConfigurationSupport的java配置上:

public class WebConfig extends WebMvcConfigurationSupport {

   
    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        registry.addInterceptor(new HttpInterceptor());
    }


}

有可能是這段代碼導致的URL映射沒自動進行。關掉這個配置,果然能從瀏覽器訪問到靜態資源了。

於是尋找這個配置添加資源映射的方法,找到了一個addResourceHandlers方法。

重載這個方法,搜索ResourceHandlerRegistry的用法:

private static final String[] RESOURCE_LOCATIONS =
            { "classpath:/META-INF/resources/", "classpath:/resources/", "classpath:/static/", "classpath:/public/" };
    @Override
    protected void addResourceHandlers(ResourceHandlerRegistry registry) {
        try {

            File directiory = new File("");
            registry.addResourceHandler("/**").addResourceLocations(RESOURCE_LOCATIONS).addResourceLocations("file:" + directiory.getCanonicalPath() + "/");

        } catch (Exception e) {

        }

}

添加之後,靜態資源正常訪問。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章