第三章,springboot中的WebMvcConfigurer接口

本章目標(biāo)

了解WebMvcConfigurer作用
IDEA實(shí)現(xiàn)接口方法
利用WebMvcConfigurer配置項(xiàng)目的CORS等

WebMvcConfigurer的作用

WebMvcConfigurer: 直接點(diǎn)就是web的配置都可以在這類里面干
可以查看spring的文檔, 其定義了很多供重構(gòu)的方法


image.png

利用WebMvcConfigurer配置項(xiàng)目的CORS等

在上節(jié)的項(xiàng)目中新建一個(gè)MyConfiguration實(shí)現(xiàn)WebMvcConfigurer

public class MyConfiguration implements WebMvcConfigurer {}

IDEA實(shí)現(xiàn)接口方法

快捷鍵 CTRL+O , 會(huì)提示所有需要實(shí)現(xiàn)的接口


image.png

springboot內(nèi)容協(xié)商配置(configureContentNegotiation)

內(nèi)容協(xié)商:在 HTTP 協(xié)議中,內(nèi)容協(xié)商是這樣一種機(jī)制,通過(guò)為同一 URI 指向的資源提供不同的展現(xiàn)形式,可以使用戶代理選擇與用戶需求相適應(yīng)的最佳匹配(例如,文檔使用的自然語(yǔ)言,圖片的格式,或者內(nèi)容編碼形式)。

image.png

@Override
    public void configureContentNegotiation(ContentNegotiationConfigurer configurer) {
        /* 是否通過(guò)請(qǐng)求Url的擴(kuò)展名來(lái)決定media type */
        configurer.favorPathExtension(true)
                /* 不檢查Accept請(qǐng)求頭 */
                .ignoreAcceptHeader(true)
                .parameterName("mediaType")
                /* 設(shè)置默認(rèn)的media yype */
                .defaultContentType(MediaType.TEXT_HTML)
                /* 請(qǐng)求以.html結(jié)尾的會(huì)被當(dāng)成MediaType.TEXT_HTML*/
                .mediaType("html", MediaType.TEXT_HTML)
                /* 請(qǐng)求以.json結(jié)尾的會(huì)被當(dāng)成MediaType.APPLICATION_JSON*/
                .mediaType("json", MediaType.APPLICATION_JSON);
    }

上面代碼說(shuō)白了就是告訴系統(tǒng)什么類型用什么來(lái)標(biāo)識(shí)

spring boot配置視圖解析(configureViewResolvers)

@Override
    public void configureViewResolvers(ViewResolverRegistry registry) {
        registry.jsp("/WEB-INF/jsp/", ".jsp");
        registry.enableContentNegotiation(new MappingJackson2JsonView());
    }

看上去是不是感覺(jué)很熟悉 ,沒(méi)錯(cuò),在application.properties里面的spring.mvc.view.prefix以及spring.mvc.view.suffix, 如果配置了視圖解析可以不需要在application.properties中配置prefix,suffix這兩項(xiàng)了 ,測(cè)試結(jié)果和之前是一樣的 http://127.0.0.1:8083/index

image.png

CORS配置

http://www.itdecent.cn/p/0b928da37fc8

資源處理(addResourceHandlers)

當(dāng)你請(qǐng)求http://localhost:8083/resource/1.png時(shí),會(huì)把/WEB-INF/static/1.png返回。注意:這里的靜態(tài)資源是放置在WEB-INF目錄下的。

然后完整的代碼如下:

@Configuration
public class MyConfiguration implements WebMvcConfigurer {
    @Override
    public void configureContentNegotiation(ContentNegotiationConfigurer configurer) {
        /* 是否通過(guò)請(qǐng)求Url的擴(kuò)展名來(lái)決定media type */
        configurer.favorPathExtension(true)
                /* 不檢查Accept請(qǐng)求頭 */
                .ignoreAcceptHeader(true)
                .parameterName("mediaType")
                /* 設(shè)置默認(rèn)的media yype */
                .defaultContentType(MediaType.TEXT_HTML)
                /* 請(qǐng)求以.html結(jié)尾的會(huì)被當(dāng)成MediaType.TEXT_HTML*/
                .mediaType("html", MediaType.TEXT_HTML)
                /* 請(qǐng)求以.json結(jié)尾的會(huì)被當(dāng)成MediaType.APPLICATION_JSON*/
                .mediaType("json", MediaType.APPLICATION_JSON);
    }

    @Override
    public void configureViewResolvers(ViewResolverRegistry registry) {
        registry.jsp("/WEB-INF/jsp/", ".jsp");
        registry.enableContentNegotiation(new MappingJackson2JsonView());
    }

    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        registry.addResourceHandler("/resource/**").addResourceLocations("/WEB-INF/static/");
    }
}

好了, 大致都是這樣, 有需要的話直接在文檔中看看就好, 只要記住這貨就是干這活的就可以了, 下一章介紹注解,

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Spring Cloud為開(kāi)發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見(jiàn)模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,653評(píng)論 19 139
  • Spring Boot 參考指南 介紹 轉(zhuǎn)載自:https://www.gitbook.com/book/qbgb...
    毛宇鵬閱讀 47,281評(píng)論 6 342
  • spring官方文檔:http://docs.spring.io/spring/docs/current/spri...
    牛馬風(fēng)情閱讀 1,856評(píng)論 0 3
  • 韶華易逝,再難許卿 倘若我沒(méi)有來(lái)到部隊(duì),我會(huì)擁有什么樣的生活?我曾無(wú)數(shù)次詰問(wèn)我自己,與其說(shuō)...
    此雨非魚(yú)閱讀 556評(píng)論 0 1
  • 概述 一般來(lái)說(shuō),我們?nèi)绻诠こ汤锩嫣砑悠渌こ痰拇a,都是copy一份過(guò)來(lái)。手動(dòng)copy比較麻煩,且容易出錯(cuò),如...
    微微笑的蝸牛閱讀 16,387評(píng)論 9 57

友情鏈接更多精彩內(nèi)容