在Spring Boot:定製URL匹配規則一文中我們展示瞭如何調整URL請求匹配到對應的控制器方法的規則。類似得,也可以控制應用程式對靜態檔案(前提是被打包進部署包)的處理。
假設我們需要透過URL http://localhost:8080/internal/application.properties
對外暴露當前程式的配置。
How Do
-
在WebConfiguration類中新增相應的配置,程式碼如下:
@Overridepublic
void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("/internal/**").
addResourceLocations("classpath:/");
}
-
透過
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秒就快取一次。