Spring MVC DispatcherServlet的初始化
protected void initStrategies(ApplicationContext context){ initMultipartResolver(context); initLocaleResolver(context); initThemeResolver(context); initHandlerMappings(context); initHandlerAdapters(context); initHandlerExceptionResolvers(context) initRequestToViewNameTranslator(context); initViewResolvers(context); }
1、initMultipartResolver:初始化 MultipartResolver用於處理檔案上傳服務,如果有檔案上傳,那麼會將當前HttpServletRequest包裝成DefaultMultipartHttpServletRequest,並將每個上傳內容封裝成CommonsMultipartFile
物件。
2、initLocaleResvlver:用於處理應用中的國際化問題,通告解析請求的Locale和設定響應的Locale來控制應用中的字元編碼問題。
3、initThemeResolver:用於定義一個主題,例如,可以根據使用者的喜好來設定使用者訪問的頁面樣式,可以將這個樣式作為一個ThemeName儲存,儲存在於請求的Cookie中或者儲存在服務端的session中,以後每次請求根據這個Theme Name返回特定內容。
4、initHandlerMappings:用於定義使用者設定的請求對映關係,例如,SimpleUrlHandlerMapping把用於使用者請求的URL對映城一個個Handler例項。對於HandlerMapping必須定義,如果沒有定義,將獲取DispatcherServlet.properties檔案中預設的兩個HandlerMapping,分別是BeanNameUrlHandlerMapping 和DefaultAnnotationHandlerMapping。
5、initHandlerAdapters:用於根據Handler的型別定義不同的處理規則,例如。定義SimpleControllerHandlerAdapter處理所有Controller的例項物件,在HandlerMapping中將URL對映成一個Controller例項,那麼Spring MVC在解析時SimpleControllerHandlerAdapter就會呼叫這個Controller例項。同樣對HandlerAdapters也必須定義,如果沒有定義,將獲取DispatcherServlet.properties檔案中預設的4個HandlerAdapters,分別是HttpResquestHandlerAdapter、SimpleControllerHandlerAdapter、ThrowawayControllerHandlerAdapter和AnnotationMethodHandlerAdapter。
6、intiHandlerExceptionResolvers:當Handler處理出錯時,會通過這個Handler來統一處理,預設的實現類是SimpleMappingExceptionResolver。將錯誤日誌記錄在log檔案中,並轉到預設的錯誤頁面。
7、initRequestToViewNameTranslator:將指定的ViewName按照定義的RequestToViewNameTranslator替換成想要的格式,如加上字尾或者字首等。
8、initViewResolvers:用於將View解析成頁面,在ViewResolvers中可以設定多個解析策略,如可以根據JSP來解析,或者按照Velocity模板解析。預設的解析策略是InternalResourceViewResolver,按照JSP頁面解析。
摘自:深入解析 Java Web技術內容 Spring MVC篇
相關推薦
Spring MVC DispatcherServlet的啟動以及初始化
protected WebApplicationContext initWebApplicationContext() { //這裡通過WebApplicationContextUtils工具類來獲取根web應用上下文,這個上下文就是之前提到的全域性應用根上下文,儲存在ServletContext中,這個
Spring MVC DispatcherServlet的初始化
protected void initStrategies(ApplicationContext context){ initMultipartResolver(context); initLocaleResolver(context); initThemeReso
Spring MVC原始碼分析之DispatcherServlet初始化過程
DispatcherServelt本質是也是Servlet,由Servlet容器進行載入。 1.Servlet介面提供了Servlet的初始化方法:init(ServletConfig config)。 2.GenericServlet實現了方法init(S
Spring MVC DispatcherServlet
root 子類 地址 ica () finall amp spring one DispatcherServlet UML圖 本次分析:HttpServlet->HttpServletBean->FramworkServlet->DispacherS
03.Spring IoC 容器 - 初始化
itl ret num servlet fontsize eat 圖片 number sources 基本概念 Spring IoC 容器的初始化過程在監聽器 ContextLoaderListener 類中定義。 具體由該類的的 configureAndRefreshWe
interface21 - web - DispatcherServlet(DispatcherServlet初始化流程)
設置 功能 urn ace 執行 bean對象 sets fault servlets 前言 最近打算花點時間好好看看spring的源碼,然而現在Spring的源碼經過叠代的版本太多了,比較龐大,看起來比較累,所以準備從最初的版本(interface21)開始入手,僅用
Spring Bean的初始化和例項化的區別
準確的說,標題中的初始化指的是Bean Definition的初始化,所以是完全不同的兩個概念。 普通的Java類如果想被SpringIOC容器託管,擁有強大的擴充套件功能和更強大的生命週期,使用者(程式設計師)要做的只是寫配置或者寫註解,然後Spring會做這些事:
spring容器重複初始化
公司的專案使用的是maven+springmvc,最近一個專案中偶然發現每次開啟tomcat,spring初始化了兩次,一開始以為配置檔案中可能重複了包掃描寫重複了,結果找了半天沒發現什麼問題。最後發現有網友提到tomcat的server.xml 解決辦法: tomcat:server.xm
Spring MVC DispatcherServlet啟動過程原理分析
Spring MVC DispatcherServlet(前端控制器)繼承關係架構 FrameworkServlet 該類是DispatcherServlet的父類。該類的initServletBean()方法是初始化DispatcherS
基於springboot2 框架整合(1):spring boot專案初始化
前言 專案中使用了很多現成的框架,都是專案經理、架構師帶來的,從來沒有自己整合過!這次決定自己從零開始整合一次,以學習鞏固。過程中參考很多開源框架的思路,工具類等,若有侵權,請速速聯絡,一定妥善處理 一:建立maven專案 這個不多說,給出pom.xml
Spring Boot之初始化專案
最簡單的從Spring官網下載 :地址 https://start.spring.io/ 下拉選擇需要的Spring Boot版本 修改Group和Artifact 直接點選Generate Project 即可生層專案壓縮包 解壓後,maven import到本地工作空間即可 開啟src/main/ja
Spring-Cloud-Gateway原始碼分析系列| Spring-Cloud-Gateway初始化
推薦 Spring Boot/Cloud 視訊: Spring-Cloud專案使用EnableAutoConfiguration註解自動 初始化配置資訊,Spring-Cloud-Gateway同樣,Spring-Cloud-Gateway下的spring.f
Spring Bean中初始化方法執行順序
1 當@Scope為singleton時,bean會在ioc初始化時就被例項化,預設為singleton,可以配合@Lazy實現延時載入 2 當@Scope為prototype時,bean在ioc初始化時不會被例項化,只有在使用時,或者手動context.getBean()時才會被例項化 3 執行順
Spring MVC DispatcherServlet詳解
DispatcherServlet作用 DispatcherServlet是前端控制器設計模式的實現,提供Spring Web MVC的集中訪問點,而且負責職責的分派,而且與Spring IoC容器無縫整合,從而可以獲得Spring的所有好處。 Dispat
Spring容器的初始化4種方式
1.從classpath路徑中載入applicationContext.xml檔案。 Resource resourc=new ClassPathResource("applicationContext.xml"); XmlBeanFactory bean=new
Spring Bean的初始化過程
Bean 的初始化過程 一個類同時實現了 BeanNameAware, BeanFactoryAware, ApplicationContextAware, BeanPostProcessor
Spring中Bean初始化的三種方法
常用的設定方式有以下三種: 通過實現 InitializingBean/DisposableBean 介面來定製初始化之後/銷燬之前的操作方法; 通過 <bean> 元素的 init-method/destroy-method屬性指定初始化之後 /銷燬之前呼叫的
spring中bean初始化過程
在傳統的Java應用中,Bean的生命週期非常簡單。Java的關鍵詞new用來例項化Bean(或許他是非序列化的)。這樣就夠用了。相反,Bean 的生命週期在Spring容器中更加細緻。理解Spring Bean的生命週期非常重要,因為你或許要利用Spring提供的機會來訂製
Spring容器IOC初始化過程—今天終於進行總結了
https://www.colabug.com/2539499.html 作為一個經常使用Spring的後端程式設計師,小編很早就想徹底弄懂整個Spring框架了!但它整體是非常大的,所有繼承圖非常複雜,加上小編修行尚淺,顯得力不從心。不過,男兒在世當立志,今天就先從Spring IOC容器的初
Spring Bean的初始化和銷燬方式詳解
最近在專案中需要封裝kafka的服務,其中使用到了工廠模式,該模式涉及到了Spring Bean的初始化和銷燬,如是研究了一番,總結如下,和大家共勉之 Spring Bean的初始化和銷燬Bean有幾種方法了?答案是3種 方法一:使用@PostConstruct註解初始化,