鍍金池/ 教程/ Java/ Spring Boot:定制static path mappings
通過JMX監(jiān)控Spring Boot應(yīng)用
Spring Boot:定制PropertyEditors
配置是否初始化Bean的方法
Spring Boot的自動配置、Command-line Runner
Spring Boot:定制URL匹配規(guī)則
Spring Boot的自動配置、Command-line Runner
利用Mockito模擬DB
Spring Boot應(yīng)用的打包和部署
了解Spring Boot的自動配置
Spring Boot應(yīng)用的健康監(jiān)控
了解Spring Boot的自動配置
初始化數(shù)據(jù)庫和導(dǎo)入數(shù)據(jù)
Spring Boot應(yīng)用的健康監(jiān)控
Docker with Spring Boot
RESTful by Spring Boot with MySQL
Spring Boot:定制攔截器
Spring Boot:定制static path mappings
Spring Boot with Mysql
Spring Boot:定制自己的starter
在測試中使用內(nèi)存數(shù)據(jù)庫
Restful: Spring Boot with Mongodb
Spring Boot with Redis
Spring Boot:定制HTTP消息轉(zhuǎn)換器
Spring Boot: Data Rest Service
Spring Boot:定制type Formatters
在Spring Boot項(xiàng)目中使用Spock框架
選擇Spring Boot項(xiàng)目的內(nèi)嵌容器
通過EmbeddedServletContainerCustomizer接口調(diào)優(yōu)Tomcat
Spring Boot應(yīng)用的打包和部署
Spring Boot Admin的使用
讓你的Spring Boot工程支持HTTP和HTTPS
Spring Boot:定制servlet filters
Spring Boot:定制URL匹配規(guī)則
Spring Boot應(yīng)用的測試——Mockito
Spring Boot應(yīng)用的測試——Mockito
Spring Boot:定制servlet filters
通過@Enable*注解觸發(fā)Spring Boot配置

Spring Boot:定制static path mappings

Spring Boot:定制URL匹配規(guī)則一文中我們展示了如何調(diào)整URL請求匹配到對應(yīng)的控制器方法的規(guī)則。類似得,也可以控制應(yīng)用程序?qū)o態(tài)文件(前提是被打包進(jìn)部署包)的處理。

假設(shè)我們需要通過URLhttp://localhost:8080/internal/application.properties對外暴露當(dāng)前程序的配置。

How Do

  • 在WebConfiguration類中添加相應(yīng)的配置,代碼如下:
@Overridepublic 
void addResourceHandlers(ResourceHandlerRegistry registry) {
    registry.addResourceHandler("/internal/**").
            addResourceLocations("/classpath:/");
}
  • 通過mvn spring-boot:run啟動應(yīng)用程序
  • 通過postman訪問http://localhost:8080/internal/application.properties就得到下列的結(jié)果

http://wiki.jikexueyuan.com/project/spring-boot-cookbook-zh/images/3.png" alt="通過配置項(xiàng)對外暴露程序的配置信息" />

分析

通過addResourceHandlers(ResourceHandlerRegistry registry) 方法可以為應(yīng)用程序中位于classpath路徑下或文件系統(tǒng)下的靜態(tài)資源配置對應(yīng)的URL,供其他人通過瀏覽器訪問。在這個例子中,我們規(guī)定所有以“/internal”開頭的URL請求會在classpath:/目錄下查找信息。

  • *registry.addResourceHandler("/internal/*")方法添加一個資源處理器,用于注冊程序中的靜態(tài)資源,該函數(shù)返回一個ResourceHandlerRegistration對象,這個對象可以進(jìn)一步配置。/internal/*字符串是一個路徑模式串,PathMatcher接口用它匹配對應(yīng)的URL請求,這里默認(rèn)使用AntPathMatcher*進(jìn)行匹配。
  • 由上個方法返回的ResourceHandlerRegistration實(shí)例調(diào)用addResourceLocations("/classpath:/")方法來規(guī)定從哪個目錄下加載資源文件。這個目錄路徑或者是有效的文件系統(tǒng)路徑,或者是classpath路徑。

PS:通過setCachePeriod(Interger cachePeriod)方法可以設(shè)置資源處理器的緩存周期——每隔cachePeriod秒就緩存一次。