歡迎光臨
每天分享高質量文章

Spring Boot:定製static path mappings

在Spring Boot:定製URL匹配規則一文中我們展示瞭如何調整URL請求匹配到對應的控制器方法的規則。類似得,也可以控制應用程式對靜態檔案(前提是被打包進部署包)的處理。

假設我們需要透過URL http://localhost:8080/internal/application.properties對外暴露當前程式的配置。

How Do

  • 在WebConfiguration類中新增相應的配置,程式碼如下:

  1. @Overridepublic

  2. void addResourceHandlers(ResourceHandlerRegistry registry) {

  3.    registry.addResourceHandler("/internal/**").

  4.            addResourceLocations("classpath:/");

  5. }

  • 透過 mvn spring-boot:run啟動應用程式

  • 透過postman訪問 http://localhost:8080/internal/application.properties就得到下列的結果

分析

透過*addResourceHandlers(ResourceHandlerRegistry registry) *方法可以為應用程式中位於classpath路徑下或檔案系統下的靜態資源配置對應的URL,供其他人透過瀏覽器訪問。在這個例子中,我們規定所有以“/internal”開頭的URL請求會在classpath:/目錄下查詢資訊。

  • registry.addResourceHandler(“/internal/“)方法新增一個資源處理器,用於註冊程式中的靜態資源,該函式傳回一個ResourceHandlerRegistration物件,這個物件可以進一步配置。/internal/字串是一個路徑樣式串,PathMatcher介面用它匹配對應的URL請求,這裡預設使用AntPathMatcher進行匹配。

  • 由上個方法傳回的ResourceHandlerRegistration實體呼叫addResourceLocations(“/classpath:/”)方法來規定從哪個目錄下載入資源檔案。這個目錄路徑或者是有效的檔案系統路徑,或者是classpath路徑。

PS:透過setCachePeriod(Interger cachePeriod)方法可以設定資源處理器的快取週期——每隔cachePeriod秒就快取一次。

贊(0)

分享創造快樂