springboot自定義靜態文件目錄,解決jar打包後修改頁面等靜態文件的問題

1.問題

springboot開發時候,通常將文件放在resources目錄,可是發佈後想修訂文件或是開發時候修改了文件內容通常需從新打包或者重啓動才能達到效果;web

2.緣由

將資源文件打包入jar包,訪問的是編譯的結果,因此運行後訪問的不是源碼目錄中的文件。導致修改效果要從新編譯才能生效。通常能夠妥協採用自定編譯來解決,可是仍然有發佈後沒法修改資源的困擾。spring

3.解決

使用springboot從新定義靜態資源的目錄,達到訪問jar包外部目錄的效果,加上user.dir的使用,能夠讓jar包訪問運行jar包的當前目錄中的指定目錄的靜態文件。主要使用springboot的攔截器方法。跨域

import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.CorsRegistry;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

@Configuration
public class clientConfig implements WebMvcConfigurer {
    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry){
        registry.addResourceHandler("/res/**").addResourceLocations("file:"+System.getProperty("user.dir")+"/res/");
//        registry.addResourceHandler("/static/**").addResourceLocations("classpath:/static/");
    }
    @Override
    public void addCorsMappings(CorsRegistry registry) {
        registry.addMapping("/**")//設置容許跨域的路徑
                .allowedOrigins("*")//設置容許跨域請求的域名
                .allowCredentials(true)//是否容許證書 再也不默認開啓
                .allowedMethods("GET", "POST", "PUT", "DELETE")//設置容許的方法
                .maxAge(3600);//跨域容許時間
    }
}
相關文章
相關標籤/搜索