spring 載入配置檔案的方式

pluga發表於2017-04-19

1、把applicationContext.xml直接放在WEB-INF/classes下,spring會採用預設的載入方式
2、採用在web.xml中配置ContextLoaderListenera或ContextLoaderServlet指定載入路徑方式。它們兩個有著同樣的功能,都實現在了org.springframework.web.context.ContextLoader類,都要定義contextConfigLocation引數。區別在於listener不能在Servlet 2.2相容的容器中使用。自從Servelt 2.4規範,listener被要求在web應用啟動後初始化。web.xml初始化的時候,listerner會檢查contextConfigLocation引數。如果不存在的話,它將預設使用/WEB-INF/applicationContext.xml。如果它存在,它就會用預先定義的分隔符(逗號,分號和空格)分開分割字串(

<context-param>   
    <param-name>contextConfigLocation</param-name>                        <param-value>
    /WEB-INF/daoContext.xml,
    /WEB-INF/config/appContext1.xml,
    /WEB-INF/config/appContext2.xml
</param-value>   
</context-param>      
<listener>   
    <listener-class>
       org.springframework.web.context.ContextLoaderListener
    </listener-class>
</listener>      
<!-- 另一種是使用ContextLoaderServlet    
<servlet>   
    <servlet-name>context</servlet-name>   
    <servlet-class>
        org.springframework.web.context.ContextLoaderServlet
    </servlet-class>   
    <load-on-startup>1</load-on-startup>   
</servlet>   
-->

3 通過ClassPathXmlApplicationContext或XmlWebApplicationContext程式碼動態載入
一:XmlBeanFactory 引用

Resource resource = new ClassPathResource("appcontext.xml");   
BeanFactory factory = new XmlBeanFactory(resource);   

二:ClassPathXmlApplicationContext 編譯路徑

ApplicationContext factory=new 
ClassPathXmlApplicationContext("classpath:appcontext.xml"); 
  ApplicationContext factory=new 
ClassPathXmlApplicationContext("appcontext.xml"); // src目錄下的 
  ApplicationContext factory=new 
ClassPathXmlApplicationContext("conf/appcontext.xml"); // src/conf 目錄下的 
  ApplicationContext factory=new 
ClassPathXmlApplicationContext("file:G:/Test/src/appcontext.xml");

三 : 用檔案系統的路徑

ApplicationContext factory=new 
FileSystemXmlApplicationContext("src/appcontext.xml"); 
//使用了 classpath: 字首,作為標誌,這樣
//FileSystemXmlApplicationContext也能夠讀入
//classpath下的相對路徑 
  ApplicationContext factory=new 
FileSystemXmlApplicationContext("classpath:appcontext.xml"); 
  ApplicationContext factory=new 
FileSystemXmlApplicationContext("file:G:/Test/src/appcontext.xml"); 

  ApplicationContext factory=new 
FileSystemXmlApplicationContext("G:/Test/src/appcontext.xml");

四: XmlWebApplicationContext 是專為Web工程定製的。

ServletContext servletContext = request.getSession().getServletContext(); 
  ApplicationContext ctx = 
WebApplicationContextUtils.getWebApplicationContext(servletContext ); 

相關文章