WebApplicationContext介紹

    WebApplicationContext是專門爲web應用準備的,他容許從相對於web根目錄的路勁中裝載配置文件完成初始化工做,從WebApplicationContext中能夠得到ServletContext的引用,整個Web應用上下文對象將做爲屬性放置在ServletContext中,以便web應用能夠訪問spring上下文,spring中提供WebApplicationContextUtils的getWebApplicationContext(ServletContext src)方法來得到WebApplicationContext對象java

 

WebApplicationContext擴展了ApplicationContext.在 WebApplicationContext中定義了一個常量 ROOT_WEB_APPLICATION_CONTEXT_ATTRIBUTE,在上下文啓動時,web

WebApplicationContext以此爲鍵放置在ServletContext屬性列表中,spring

 

public static WebApplicationContext getWebApplicationContext(ServletContext sc) {
        return getWebApplicationContext(sc, WebApplicationContext.ROOT_WEB_APPLICATION_CONTEXT_ATTRIBUTE);
    }

ConfigurableWebApplicationContext擴展了WebApplicationContext,它容許經過配置的方式實例化,同時設置兩個重要方法spa

  setServletContext(ServletContext context) 爲spring設置web應用上下文,以便二者整合3d

setConfigLocations(String[]locations) 設置Spring配置的文件地址code

 

webApplicationContext初始化須要ServletContext,也就是說須要web容器前提下才能·完成啓動工做  能夠經過在web.xml中配置自啓動Servlet或Web容器監聽來實現web容器的啓動xml

Spring分別提供啓動WebApplicationContext的servlet和Web容器監聽器對象

  org.springframework.web.context.ContextLoaderListener  blog

 org.springframework.web.context.ContexLoaderServlet     此方法目前以廢棄get

!--從類路徑下加載Spring配置文件,classpath特指類路徑下加載-->
    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>
            classpath:smart-context.xml
        </param-value>
    </context-param>
    <!--負責啓動spring容器的監聽器  還能夠聲明自啓動的Servlet   ContextLoaderServlet-->
    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>

 

若是使用@Configuration的java類提供配置信息的配置  web.xml配置修改以下

 <!--經過指定context參數,讓Spring使用AnnotationConfigWebApplicationContext啓動容器而非XmlWebApplicationContext   默認沒配置時是使用XmlWebApplicationContext-->
    <context-param>
        <param-name>contextClass</param-name>
        <param-value>
            org.springframework.web.context.support.AnnotationConfigWebApplicationContext
        </param-value>
    </context-param>
<!--指定標註了@Configuration的類,多個能夠用逗號分隔-->
    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>com.example.Car,com.example.Boss</param-value>
    </context-param>
    <!--監聽器將根據上面的配置使用AnnotationConfigWebApplicationContext
    根據contextConfigLocation
    指定的配置類啓動Spring容器-->
    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>
相關文章
相關標籤/搜索