亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

基于springmvc的web應(yīng)用初始化流程和配置加載注

系統(tǒng) 2310 0

基于springmvc的web應(yīng)用在初始化時做了什么?application context何時加載?有幾種加載方式?

?

和所有的java web框架一樣,springmvc實際上就是在典型的servlet處理request的流程上再包裹了一層而已。springmvc的初始化流程也同樣和容器初始化servlet流程一樣。容器初始化servlet上下文的流程如下,servlet context一般而言就是那個web.xml里設(shè)定上下文環(huán)境。
基于springmvc的web應(yīng)用初始化流程和配置加載注意點

?

springmvc中最典型的ServletContextListener實現(xiàn)就是ContextLoaderListener,其重寫的contextInitialized方法
定義了spring在初始化servletContext時的一些動作。
其會加載由context-param參數(shù)contextConfigLocation中指定的spring application context配置文件。
配置如下:

    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>
            /WEB-INF/applicationContext.xml /WEB-INF/applicationContext2.xml
        </param-value>
    </context-param>
  

?

使用 contextConfigLocation 加載指定路徑的配置文件時,多個配置文件可以用 逗號,冒號,空格, \t,\n 中任一個來分隔。

如果沒有指定contextConfigLocation 參數(shù),ContextLoaderListener會默認(rèn)加載/WEB-INF/applicationContext.xml這個配置文件。

springmvc將由ContextLoaderListener 載入的application context 叫做 "root application context" ,以區(qū)別于servlet的application context。

ServletContextListener在servlet context里的配置參考如下:

    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>
  
?


如果沒有在servlet context里配置,就不存在"root application context"。

springmvc可以配置多個servlet,每一個 servlet都擁有各自的application context,相互之間不能相互訪問。但是"root application context"卻是對所有servlet都是可見的。

如果servlet直接使用DispatcherServlet,其application context在DispatcherServlet的 init 方法被調(diào)用時初始化。
servlet application context的加載策略類似于root application context,首先會查找是否配置了servlet的init-param "contextConfigLocation",如果有,就使用 contextConfigLocation 指定的路徑加載的配置文件時,多個配置文件可以用 逗號,冒號,空格, \t,\n 中任一個來分隔。


如果沒有指定"contextConfigLocation"參數(shù),則會在?? /WEB-INF/下查找 "servlet-name"+"-servlet.xml" 這樣的文件加載。如下配置所示,就是 /WEB-INF/springDispatcherServlet-servlet.xml

    <servlet>
        <servlet-name>springDispatcherServlet</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>
                /WEB-INF/servlet-applicationContext.xml
            </param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>

    <servlet-mapping>
        <servlet-name>springDispatcherServlet</servlet-name>
        <url-pattern>/mvc/*</url-pattern>
    </servlet-mapping>

  

?


最后,該servlet application context將root application context設(shè)置為parent,然后加載完成。

以后在應(yīng)用里調(diào)用applicationContext或者beanFactory的getBean方法去獲取實例的時候,都是先嘗試從父級application context獲取,獲取不到,再到當(dāng)前application context里獲取。

除此之外,我們還可以在某個類里以編程式加載application context,比如使用ClassPathXmlApplicationContext或FileSystemXmlApplicationContext。不過這樣加載的application context和root application context和servlet application context 分屬于不同的可見范圍。

基于springmvc的web應(yīng)用初始化流程和配置加載注意點


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯(lián)系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發(fā)表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 国产综合欧美 | 国内精品亚洲 | 一区二三区国产 | 欧美日韩一区二区在线观看视频 | 免费欧美黄色网址 | 99久久精品国产9999高清 | 亚洲精品一区二区三区中文字幕 | 久久伊人影视 | 久久九九亚洲精品 | 欧美日视频 | 美女被cao的视频免费看 | 国产成人一区二区三区视频免费 | 精品无人乱码区1区2区3区 | 99国产福利视频区 | 天天干天天插天天射 | 亚洲另类精品综合 | 玖玖在线资源站 | 国产二区在线播放 | 青青青视频在线 | 亚洲玖玖 | 亚洲第一成年网 | 激情影院费观看 | 男人资源网站 | 久久久久久久综合色一本 | 国产精品视频偷伦精品视频 | 91亚洲国产成人久久精品网址 | 国产日本欧美在线观看 | 99久久综合狠狠综合久久aⅴ | 思思久久99热这里只有精品66 | 四虎永久在线精品国产馆v视影院 | 一本大道香蕉大在线最新 | 97精品视频| 麻豆国产精品视频 | 中文字幕国产在线 | 成人国产在线观看 | 久久视屏这里只有精品6国产 | 亚洲欧洲一区二区三区在线观看 | 国产精品久久久久久久免费大片 | 欧美级毛片 | 久久99精品久久久久久综合 | 曰批免费视频播放在线看片二 |