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。如果它存在,它就會用預先定義的分隔符(逗号,分号和空格)分開分割字元串(<param-value></param-value),并将這些值作為應用上下文将要搜尋的位置。
代碼
<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 );