昨日我們看到Spring Boot如何幫我們配置相關靜態資源,那麼如自定義組件來符合我們的使用呢,今天就來看看如何做吧
<dependency>
<groupId>org.webjars</groupId>
<artifactId>jquery</artifactId>
<version>3.7.1</version>
</dependency>
spring:
web:
resources:
static-locations: classpath:/a/,classpath:/b/,classpath:/static/ #設定靜態資源文件位置
use-last-modified: true #使用資源last-modified時間,來比對資源是否異動相同則返回304
cache:
cachecontrol:
cache-public: true #共享緩存
max-age: '7200' #此資源最大緩存時間7200秒
period: 3600 #當有cachecontrol時會失效
在resource資料夾下建立a與b資料夾並放置圖片
訪問結果
webjars是將前端資源(ex.jQuery、Bootstrap等)打包成jar,方便我們透過maven進行管理
spring:
mvc:
static-path-pattern: /static/** #加入訪問靜態資源路徑
webjars-path-pattern: /james/** #自訂義webjars路徑前綴,預設webjars
容器中只要有WebMvcConfigurer組件,配置底層的行為就會生效
@Configuration //配置類
public class MyConfig implements WebMvcConfigurer {
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("/static/**")
.addResourceLocations("classpath:/a/","classpath:/b/")
.setCacheControl(CacheControl.maxAge(3333, TimeUnit.SECONDS));
}
}
@Configuration
public class MyConfig /*implements WebMvcConfigurer*/ {
@Bean
public WebMvcConfigurer webMvcConfigurer(){
return new WebMvcConfigurer() {
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("/static/**")
.addResourceLocations("classpath:/a/", "classpath:/b/")
.setCacheControl(CacheControl.maxAge(4567, TimeUnit.SECONDS));
}
};
}
}