SpringMVC配置文件(java配置)詳解

????????擴展AbstractAnnotationConfigDispatcherServletInitializer的任意類都會自動地配置DispatcherServlet和Spring應(yīng)用上下文,Spring的應(yīng)用上下文會位于應(yīng)用程序的Servlet上下文之中炫彩。(或者擴展WebApplicationInitializer的其余子類亦可)

????????在Servlet 3.0環(huán)境中责蝠,容器會在類路徑中查找實現(xiàn)javax.servlet.ServletContainerInitializer接口的類摊求,如果能發(fā)現(xiàn)的話隙轻,就會用它來配置Servlet容器(作用與web.xml很像)庞钢。

????????Spring提供了這個接口的實現(xiàn)访锻,名為SpringServletContainerInitializer褪尝,這個類反過來又會查找實現(xiàn)WebApplicationInitializer的類并將配置的任務(wù)交給它們來完成。Spring 3.2引入了一個便利的WebApplicationInitializer基礎(chǔ)實現(xiàn)期犬,也就是AbstractAnnotationConfigDispatcherServletInitializer因為我們的SpittrWebAppInitializer擴展了AbstractAnnotationConfigDispatcherServletInitializer(同時也就實現(xiàn)了WebApplicationInitializer)河哑,因此當部署到Servlet 3.0容器中的時候,容器會自動發(fā)現(xiàn)它龟虎,并用它來配置Servlet上下文璃谨。

? ? (注:@HandlesTypes可以把指定的類和它的子類作為參數(shù)傳入ServletContainerInitializer的onStartUp()方法中)

盡管它的名字很長,但是AbstractAnnotationConfigDispatcherServletInitializer使用起來很簡便鲤妥。在上述程序中睬罗,SpittrWebAppInitializer重寫了三個方法。

????????第一個方法是getServletMappings()旭斥,它會將一個或多個路徑映射到DispatcherServlet上容达。在本例中,它映射的是“/”垂券,這表示它會是應(yīng)用的默認Servlet花盐。它會處理進入應(yīng)用的所有請求。

????????為了理解其他的兩個方法菇爪,我們首先要理解DispatcherServlet和一個Servlet監(jiān)聽器(也就是ContextLoaderListener)的關(guān)系算芯。

????兩個應(yīng)用上下文之間的故事:

????當DispatcherServlet啟動的時候,它會創(chuàng)建Spring應(yīng)用上下文凳宙,并加載配置文件或配置類中所聲明的bean熙揍。在上述程序的getServletConfigClasses()方法中,我們要求DispatcherServlet加載應(yīng)用上下文時氏涩,使用定義在WebConfig配置類(使用Java配置)中的bean届囚。但是在Spring Web應(yīng)用中有梆,通常還會有另外一個應(yīng)用上下文。另外的這個應(yīng)用上下文是由ContextLoaderListener創(chuàng)建的意系。我們希望DispatcherServlet加載包含Web組件的bean泥耀,如控制器、視圖解析器以及處理器映射蛔添,而ContextLoaderListener要加載應(yīng)用中的其他bean痰催。這些bean通常是驅(qū)動應(yīng)用后端的中間層和數(shù)據(jù)層組件。

????????實際上迎瞧,AbstractAnnotationConfigDispatcherServletInitializer會同時創(chuàng)建DispatcherServlet和ContextLoaderListener夸溶。

????????getServletConfigClasses()方法返回的帶有@Configuration注解的類將會用來定義DispatcherServlet應(yīng)用上下文中的bean。

????????getRootConfigClasses()方法返回的帶有@Configuration注解的類將會用來配置ContextLoaderListener創(chuàng)建的應(yīng)用上下文中的bean凶硅。

????????在本例中缝裁,根配置定義在RootConfig中,DispatcherServlet的配置聲明在WebConfig中咏尝。往下我們將會看到這兩個類的內(nèi)容压语。

需要注意的是啸罢,通過AbstractAnnotationConfigDispatcherServletInitializer來配置DispatcherServlet是傳統(tǒng)web.xml方式的替代方案编检。如果按照這種方式配置DispatcherServlet,而不是使用web.xml的話扰才,那唯一問題在于它只能部署到支持Servlet 3.0的服務(wù)器中才能正常工作允懂,如Tomcat 7或更高版本。


????????使用@EnableWebMvc啟用Spring MVC(使用<mvc:annotation-driven>啟用注解驅(qū)動的

Spring MVC)衩匣。

????????WebConfig類還擴展了WebMvcConfigurerAdapter并重寫了configureDefaultServletHandling()方法蕾总。通過調(diào)用DefaultServletHandlerConfigurer的enable()方法,我們要求DispatcherServlet將對靜態(tài)資源的請求轉(zhuǎn)發(fā)到Servlet容器中默認的Servlet上琅捏,而不是使用DispatcherServlet本身來處理此類請求生百。


最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市柄延,隨后出現(xiàn)的幾起案子蚀浆,更是在濱河造成了極大的恐慌,老刑警劉巖搜吧,帶你破解...
    沈念sama閱讀 221,695評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件市俊,死亡現(xiàn)場離奇詭異,居然都是意外死亡滤奈,警方通過查閱死者的電腦和手機摆昧,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,569評論 3 399
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來蜒程,“玉大人绅你,你說我怎么就攤上這事伺帘。” “怎么了勇吊?”我有些...
    開封第一講書人閱讀 168,130評論 0 360
  • 文/不壞的土叔 我叫張陵曼追,是天一觀的道長。 經(jīng)常有香客問我汉规,道長礼殊,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,648評論 1 297
  • 正文 為了忘掉前任针史,我火速辦了婚禮晶伦,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘啄枕。我一直安慰自己婚陪,他們只是感情好,可當我...
    茶點故事閱讀 68,655評論 6 397
  • 文/花漫 我一把揭開白布频祝。 她就那樣靜靜地躺著泌参,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上预麸,一...
    開封第一講書人閱讀 52,268評論 1 309
  • 那天熊咽,我揣著相機與錄音,去河邊找鬼铣缠。 笑死,一個胖子當著我的面吹牛昆禽,可吹牛的內(nèi)容都是我干的蝗蛙。 我是一名探鬼主播,決...
    沈念sama閱讀 40,835評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼醉鳖,長吁一口氣:“原來是場噩夢啊……” “哼捡硅!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起盗棵,我...
    開封第一講書人閱讀 39,740評論 0 276
  • 序言:老撾萬榮一對情侶失蹤壮韭,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后漾根,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體泰涂,經(jīng)...
    沈念sama閱讀 46,286評論 1 318
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,375評論 3 340
  • 正文 我和宋清朗相戀三年辐怕,在試婚紗的時候發(fā)現(xiàn)自己被綠了逼蒙。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,505評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡寄疏,死狀恐怖是牢,靈堂內(nèi)的尸體忽然破棺而出僵井,到底是詐尸還是另有隱情,我是刑警寧澤驳棱,帶...
    沈念sama閱讀 36,185評論 5 350
  • 正文 年R本政府宣布批什,位于F島的核電站,受9級特大地震影響社搅,放射性物質(zhì)發(fā)生泄漏驻债。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,873評論 3 333
  • 文/蒙蒙 一形葬、第九天 我趴在偏房一處隱蔽的房頂上張望合呐。 院中可真熱鬧,春花似錦笙以、人聲如沸淌实。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,357評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽拆祈。三九已至,卻和暖如春倘感,著一層夾襖步出監(jiān)牢的瞬間放坏,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,466評論 1 272
  • 我被黑心中介騙來泰國打工侠仇, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留轻姿,地道東北人犁珠。 一個月前我還...
    沈念sama閱讀 48,921評論 3 376
  • 正文 我出身青樓逻炊,卻偏偏與公主長得像,于是被迫代替她去往敵國和親犁享。 傳聞我的和親對象是個殘疾皇子余素,可洞房花燭夜當晚...
    茶點故事閱讀 45,515評論 2 359

推薦閱讀更多精彩內(nèi)容