1. 程式人生 > >Spring中載入xml配置檔案的常用的幾種方式

Spring中載入xml配置檔案的常用的幾種方式

專案中一個需求就是所有的功能都是外掛的形式裝入系統,這就需要利用Spring去動態載入某一位置下的配置檔案,就總結了下Spring中載入xml配置檔案的方式, xml是最常見的spring 應用系統配置源。Spring中的幾種容器都支援使用xml裝配bean,包括: 

XmlBeanFactory,

ClassPathXmlApplicationContext,

FileSystemXmlApplicationContext,

XmlWebApplicationContext,

.....

: XmlBeanFactory 引用資源

1.Resource cr = new ClassPathResource("applicationContext.xml");

BeanFactory bf=new XmlBeanFactory(cr);

UserDao userDao = (UserDao)bf.getBean("userDao");

: ClassPathXmlApplicationContext  編譯路徑

使用ClassPathXmlApplicationContext物件獲取,必須把applicationContext.xml放置到類的載入路徑中,也就是Src下面

1.ApplicationContext factory=new ClassPathXmlApplicationContext("classpath:appcontext.xml");

// src目錄下的

2.ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml"); UserDao userDao = (UserDao)context.getBean("userDao");

3.ApplicationContext context = new ClassPathXmlApplicationContext(new String[]{"applicationContext-oracle.xml","applicationContext.xml"});

UserDao userDao = (UserDao)context.getBean("userDao");

// src/conf 目錄下的

4.ApplicationContext factory=new ClassPathXmlApplicationContext("conf/appcontext.xml");

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

三: FileSystemXmlApplicationContext用檔案系統的路徑

必須把applicationContext.xml放置到工程目錄下面,也就是專案路徑的下面 

1.ApplicationContext factory=new FileSystemXmlApplicationContext("src/appcontext.xml"); 


//使用了  classpath:  字首,作為標誌,  這樣,FileSystemXmlApplicationContext 也能夠讀入classpath下的相對路徑 

沒有classpath的話就是從當前的工作目錄

2.ApplicationContext factory=new FileSystemXmlApplicationContext("classpath:appcontext.xml"); 


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


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

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

1.ServletContext servletContext = request.getSession().getServletContext();

ApplicationContext ctx= WebApplicationContextUtils.getWebApplicationContext(servletContext );

2.XmlWebApplicationContext ctx = new XmlWebApplicationContext(); ctx.setConfigLocations(new String[] {"/WEB-INF/applicationContext.xml"); ctx.setServletContext(pageContext.getServletContext());

ctx.refresh();

UserDao userDao = (UserDao ) ctx.getBean("userDao ");

Web 應用啟動時載入多個配置檔案

通過ContextLoaderListener 也可載入多個配置檔案,在web.xml檔案中利用

<context-pararn>元素來指定多個配置檔案位置,其配置如下:

<context-param>  
    <!-- Context Configuration locations for Spring XML files -->  
       <param-name>contextConfigLocation</param-name>  
       <param-value>  
       ./WEB-INF/**/Appserver-resources.xml,  
       classpath:config/aer/aerContext.xml,  
       classpath:org/codehaus/xfire/spring/xfire.xml,  
       ./WEB-INF/**/*.spring.xml  
       </param-value>  
 </context-param>  


參考文件: