Spring Boot配置接口WebMvcConfigurer

前言

WebMvcConfigurer配置類實際上是Spring內部的一種配置方式,採用JavaBean的形式來代替傳統的xml配置文件形式進行鍼對框架個性化定製。基於java-based方式的spring mvc配置,須要建立一個配置類並實現WebMvcConfigurer接口,WebMvcConfigurerAdapter 抽象類是對WebMvcConfigurer接口的簡單抽象(增長了一些默認實現),但在在SpringBoot2.0及Spring5.0中WebMvcConfigurerAdapter已被廢棄html

官方推薦直接實現WebMvcConfigurer或者直接繼承WebMvcConfigurationSupport
方式一實現WebMvcConfigurer接口(推薦)。
方式二繼承WebMvcConfigurationSupport【傳送門】java

WebMvcConfigurer

部分方法說明以下:spring

/* 攔截器配置 */
void addInterceptors(InterceptorRegistry var1);
/* 視圖跳轉控制器 */
void addViewControllers(ViewControllerRegistry registry);
/* 靜態資源處理 */
void addResourceHandlers(ResourceHandlerRegistry registry);
/* 默認靜態資源處理器 */
void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer);
/* 這裏配置視圖解析器 */
void configureViewResolvers(ViewResolverRegistry registry);
/* 配置內容裁決的一些選項*/
void configureContentNegotiation(ContentNegotiationConfigurer configurer);

頁面跳轉addViewControllers

之前寫SpringMVC的時候,若是須要訪問一個頁面,必需要寫Controller類,而後再寫一個方法跳轉到頁面,感受好麻煩,其實重寫WebMvcConfigurer中的addViewControllers方法便可達到效果了.json

/**
 * 之前要訪問一個頁面須要先建立個Controller控制類,再寫方法跳轉到頁面
 * 在這裏配置後就不須要那麼麻煩了,直接訪問http://localhost:8080/toLogin就跳轉到login.jsp頁面了
 * @param registry
 */
@Override
public void addViewControllers(ViewControllerRegistry registry) {
    registry.addViewController("/toLogin").setViewName("login");
}

自定義資源映射addResourceHandlers

/**
 * 配置靜態訪問資源
 * @param registry
 */
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) { registry.addResourceHandler("/my/**").addResourceLocations("classpath:/my/");
}

經過addResourceHandler添加映射路徑,而後經過addResourceLocations來指定路徑。咱們訪問自定義my文件夾中的elephant.jpg 圖片的地址爲 http://localhost:8080/my/elephant.jpgmvc

configureContentNegotiation

public void configureContentNegotiation(ContentNegotiationConfigurer configurer) {
   /* 是否經過請求Url的擴展名來決定media type */
    configurer.favorPathExtension(true)  
             /* 不檢查Accept請求頭 */
            .ignoreAcceptHeader(true)
            .parameterName("mediaType")
             /* 設置默認的media yype */
            .defaultContentType(MediaType.TEXT_HTML)
             /* 請求以.html結尾的會被當成MediaType.TEXT_HTML*/
            .mediaType("html", MediaType.TEXT_HTML)
            /* 請求以.json結尾的會被當成MediaType.APPLICATION_JSON*/
            .mediaType("json", MediaType.APPLICATION_JSON);
}

參考文章:
Spring Boot配置接口 WebMvcConfigurer框架

相關文章
相關標籤/搜索