SpringMVC自動配置

springboot為SpringMVC配置了自動配置,以下是SpringBoot對SpringMVC的默認配置

org.springframework.boot.autoconfigure.web.servlet.WebMvcAutoConfiguration

自動配置在Spring的默認配置之上添加了以下功能

  • 包含ContentNegotiatingViewResolverBeanNameViewResolver。--> 視圖解析器
  • 支持服務靜態資源,包括對WebJars的支持(官方文檔中有介紹)。--> 靜態資源文件夾路徑
  • 自動注冊ConverterGenericConverterFormatterbeans。--> 轉換器,格式化器
  • 支持HttpMessageConverters(官方文檔中有介紹)。--> SpringMVC用來轉換Http請求和響應的;
  • 自動注冊MessageCodesResolver(官方文檔中有介紹)。--> 定義錯誤代碼生成規則
  • 靜態index.html支持。--> 靜態首頁訪問
  • 定制Favicon.ioc支持(官方文檔中有介紹)。--> 網站圖標
  • 自動使用ConfigurableWebBindingInitializerbean(官方文檔中有介紹)。

如果您想保留 Spring Boot MVC 的功能,并且需要添加其他?MVC 配置(攔截器,格式化程序和視圖控制器等),可以添加自己的?WebMvcConfigurer?類型的?@Configuration?類,但不能帶?@EnableWebMvc?注解。如果您想自定義?RequestMappingHandlerMappingRequestMappingHandlerAdapter?或者?ExceptionHandlerExceptionResolver?實例,可以聲明一個?WebMvcRegistrationsAdapter?實例來提供這些組件。如果您想完全掌控 Spring MVC,可以添加自定義注解了?@EnableWebMvc?的 @Configuration 配置類。

視圖解析器

視圖解析器:根據方法的返回值得到視圖對象(View),視圖對象決定如何渲染(轉發?重定向?)

  • 自動配置了ViewResolver
  • ContentNegotiatingViewResolver:組合所有的視圖解析器的;

轉換器/格式化器

  • Converter:轉換器; public String hello(User user):類型轉換使用Converter(表單數據轉為user)
  • Formatter?格式化器; 2017.12.17===Date;
        @Bean//在配置文件中配置日期格式化的規則@ConditionalOnProperty(prefix = "spring.mvc", name = "date-format")public Formatter<Date> dateFormatter() {return new DateFormatter(this.mvcProperties.getDateFormat());//日期格式化組件}

自己添加的格式化器轉換器,我們只需要放在容器中即可

HttpMessageConverters

  • HttpMessageConverter:SpringMVC用來轉換Http請求和響應的;User---Json;
  • HttpMessageConverters?是從容器中確定;獲取所有的HttpMessageConverter;
  • 自己給容器中添加HttpMessageConverter,只需要將自己的組件注冊容器中(@Bean,@Component)

MessageCodesResolver

我們可以配置一個ConfigurableWebBindingInitializer來替換默認的;(添加到容器)

擴展SpringMVC

  • 先前的配置文件的配置
    <mvc:view-controller path="/hello" view-name="success"/>
  • 使用配置類(@Configuration)是WebMvcConfigurer類型,不能標注@EnableWebMvc
    @Configuration
    public class MyMvcConfig implements WebMvcConfigurer {@Overridepublic void addViewControllers(ViewControllerRegistry registry) {registry.addViewController("/hi").setViewName("success");}
    }

如何修改SpringBoot的默認配置

SpringBoot在自動配置很多組件的時候,先看容器中有沒有用戶自己配置的(@Bean、@Component)如果有就用戶配置的,如果沒有,才自動配置;如果有些組件可以有多個(ViewResolver)將用戶配置的和自己默認的組合起來;

  • 在SpringBoot中會有非常多的xxxConfigurer幫助我們進行擴展配置
  • 在SpringBoot中會有很多的xxxCustomizer幫助我們進行定制配置

?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/447362.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/447362.shtml
英文地址,請注明出處:http://en.pswp.cn/news/447362.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

做一名合格的生意人

偶然的成功&#xff0c;包含著某種必然的因素&#xff0c;那就是一個生意人本身的素質。作為一名現代生意人&#xff0c;要想使自己所從事的事業取得新的成功&#xff0c;就要加強自身的修養&#xff0c;不斷掌握新知識&#xff0c;努力使自己成為“全才”。 □ 事業成功的十個…

restful風格的增刪改查

注意 如果靜態資源放到了靜態資源文件夾下卻無法訪問&#xff0c;請檢查一下是不是在自定義的配置類上加了EnableWebMvc注解templete文件夾不是靜態資源的文件夾&#xff0c;默認是無法訪問的&#xff0c;所以要添加視圖映射 package cn.xxxxxx.hellospringbootweb.config;imp…

歷史上最有影響力的10款開源項目

開源是大趨勢&#xff0c;開源軟件也在越來越多的出現在日常電腦桌面上&#xff0c;如Firefox瀏覽器、Ubuntu操作系統等。人們選擇開源軟件的原因&#xff0c;主要有低成本、安全無病毒侵害、更加透明和開放等。按照大多數的開源協議如GPL&#xff0c;開源軟件允許自由分發。在…

SpringBoot默認的錯誤處理機制

錯誤處理機制&#xff1a; 訪問一個不存在的頁面時&#xff0c;或者程序拋出異常時 默認效果 瀏覽器返回一個錯誤的頁面&#xff0c;注意查看瀏覽器發送請求的請求頭可以使用專業的軟件比如postman分析返回的json數據 springboot錯誤處理的自動配置信息 主要給日容器中注冊…

GitHub政府用戶破萬:開源成重塑政府新手段

據GitHub官方博客介紹&#xff0c;目前GitHub上的各地政府用戶數量已經達到1萬個&#xff01; 2009年&#xff0c;紐約參議院正式入駐GitHub公開部分技術資料與文檔&#xff0c;成為GitHub上的第一個政府組織。隨后&#xff0c;美國華盛頓特區、邁阿密、芝加哥、紐約&#xff…

配置嵌入式Servlet容器

如何定制和修改Servlet容器的相關配置 修改定制和修改Servlet容器的相關配置 server.port8081 server.context-path/crudserver.tomcat.uri-encodingUTF-8//通用的Servlet容器設置 server.xxx //Tomcat的設置 server.tomcat.xxx 編寫一個EmbeddedServletContainerCustomizer&…

云OS:Linux在桌面打翻身仗的機會?

不可否認&#xff0c;Chrome OS取得了驚人的增長。Chromebook自發行以來&#xff0c;迅速席卷全球&#xff0c;常年位居最暢銷筆記本榜首。這款基于Linux的筆記本在合適時間提供了合適的解決方案。很多情況下&#xff0c;云不僅僅是一個可選項&#xff0c;而是一個最優選項。Li…

Docker容器基本使用

Dcoker Docker是一個開源的應用容器引擎&#xff0c;是一個輕量級別的容器技術Dcoker支持將軟件編譯成一個鏡像&#xff1b;然后在鏡像中對各種軟件做好配置&#xff0c;再將鏡像發布出去&#xff0c;供別人使用運行中的鏡像稱為容器&#xff0c;容器的啟動是非常快速的核心概…

為什么35歲的C++依然能主導編程世界

早在1979年&#xff0c;Bjarne Stroustrup設計了C編程語言&#xff0c;并且C很快成為了無處不在的通用系統編程語言。現在盡管有Java、Javascript、Python、Go&#xff0c;甚至是蘋果的Swift和它競爭&#xff0c;但C依然處于主導編程世界的地位。 今天在Morgan Stanley的科技訪…

SpringBoot整合JPA

添加依賴 <dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-jpa</artifactId></dependency><dependency><groupId>mysql</groupId><artifactId&…

為什么說選擇正確的編程語言很重要,以及如何正確的選擇

幾個月前&#xff0c;一個同事問我&#xff0c;應該如何選擇編程語言&#xff0c;或者有沒有什么固定的選擇模式&#xff0c;當時我便打算寫點什么。上周在硅谷開會&#xff0c;這我是第一次跟“hack3rs”的創業狂以及技術狂們打交道。我學會了很多前所未聞的臟話&#xff0c;也…

細數開源歷史上的十個重大事件

開放源碼&#xff08;開源&#xff09;的精神在于使用者可以使用、復制、散布、研究和改進軟件。這可以追溯到20世紀60年代&#xff0c;至今已有半個世紀了。雖然下面所列舉的不都是專門的開源產品&#xff0c;但還是在開源發展的進程中有著巨大的影響。開放源碼&#xff08;開…

科研必備學士搜索引擎推薦

綜合性學術搜索引擎 中國知網萬方數據百度學術谷歌學術谷歌學術鏡像Web of ScienceEiVillage2EIsevier電子期刊SpringerSemanticScholar 圖片文獻檢索方法 CNKI 期刊查詢 DOAJSocolarOpenDOAROALIB開放存取圖書館 碩博論文搜索下載 上海交大鏡像網站歐洲學位論文庫 國外電子…

如何寫一篇論文

文獻綜述的地位 體現了學術研究的繼承性 文獻綜述的寫作是由學術研究的繼承性決定的&#xff0c;因為繼承是創新的基礎和前提。文獻綜述部分要澄清所研究問題“從哪里來&#xff0c;到哪里去” 。這部分主要是繼承&#xff0c;是梳理前人的成果并找出其內在的邏輯關系和演進的規…

深度卷積神經網絡CNNs的多GPU并行框架及其應用

摘要&#xff1a;本文是騰訊深度學習系列文章之一&#xff0c;主要聚焦于騰訊深度學習平臺&#xff08;Tencent Deep Learning Platform&#xff09;中深度卷積神經網絡Deep CNNs的多GPU模型并行和數據并行框架。 【編者按】深度卷積神經網絡有著廣泛的應用場景&#xff0c;本…

如果誤刪谷歌瀏覽器的書簽,怎么恢復

如果是Mac用戶&#xff0c;command和z一直恢復就可以 同理&#xff0c;windows用戶&#xff0c;也可以使用撤銷鍵&#xff0c;ctrlz即可

55分鐘學會正則表達式

正則表達式是一種查找以及字符串替換操作。正則表達式在文本編輯器中廣泛使用&#xff0c;比如正則表達式被用于&#xff1a; 檢查文本中是否含有指定的特征詞找出文中匹配特征詞的位置從文本中提取信息&#xff0c;比如&#xff1a;字符串的子串修改文本 與文本編輯器相似&a…

線程安全和對應的核心概念

線程安全 線程安全的概念&#xff1a;當多個線程訪問某一個類&#xff08;對象和方法&#xff09;時&#xff0c;這個類始終都能表現出正確的行為&#xff0c;那么這個類&#xff08;對象或者方法&#xff09;就是線程安全的synchronized&#xff1a;可以在任意對象及方法上加…

JDK Unsafe類的使用與CAS原子特性

JDK Unsafe類的使用與CAS原子特性 Java.util.concurrent.atomic包&#xff0c;其中包含了大量使用到Unsafe這個類Java不能直接訪問操作系統的底層&#xff0c;而是通過本地方法來訪問。 Unsafe類提供了硬件級別的原子操作&#xff0c;主要提供了以下功能 內存操作字段的定位和…

寫軟件不是造汽車

寫軟件和做其他事情是不一樣的。當我們制造別的東西的時候——像汽車、玩具、椅子、畫作、甚至包括數字產品如平面圖片和3D模型——我們做出來的成品就是最終的結果。而開發軟件則不是&#xff0c;我們做出來的產品永遠不可能有最終的結果——我們需要向計算機解釋如何根據任意…