Spring載入XML配置文件
原創鏈接:http://www.cnblogs.com/yanqin/p/5282929.html(允許轉載,但請註明原創鏈接)
載入單個文件
FileSystemResource和ClassPathResource都是實現了Resource介面,他們都可以用來載入XML文件。 BeanFactory是需要時getBean(),才會去載入。 具體代碼如下: Resource resource1 = new ClassPathResource("文件.xml"); Resource resource2 = new FileSystemResource("盤符:/項目路徑/src/文件.xml"); BeanFactory factory = new XmlBeanFactory(resource); ClassPathResource載入文件,是從源文件夾下(比如src),去找文件。 註:web項目中,不同源文件夾的文件最終都會被編譯到classes目錄中,所以不同源文件夾下的文件不能同名,不然會覆蓋。FileSystemResource載入文件,是從盤符為起點,去找文件。
能載入單個或多個文件,並且不再分file classpath不同類來載入
ResourceLoader是載入文件的介面。 ResourcePatternResolver介面繼承了ResourceLoader介面。 PathMatchingResourcePatternResolver類實現了ResourcePatternResolver介面。 BeanFactory是需要時才載入,也就是代碼運行getBean()才會去載入。 Spring中載入文件的代碼如下: package com.tz.dao; import java.io.IOException; import org.springframework.core.io.Resource; import org.springframework.core.io.support.PathMatchingResourcePatternResolver; import org.springframework.core.io.support.ResourcePatternResolver; public class B { public static void main(String[] args) throws IOException { ResourcePatternResolver rp = new PathMatchingResourcePatternResolver(); // 空1,此處可填入classpath或file,classpath是以項目src目錄為起點,file是以盤符為起點。 // 空2,是文件的路徑+名字。 Resource resource = rp.getResource("空1:空2"); // classpath* // 空1後面加*,如classpath*,這個意思是,在空2的路徑下查名字是空2里名字的文件,返回的是數組。 // 如:classpath*:com/bean.xml,是從源文件夾下的com目錄下找所有的bean.xml,包括jar裡面com目錄下的的文件。 Resource[] resources = rp.getResources("classpath*:applicationContext.xml"); // classpath:com/*.xml classpath:com/?.xml // ? 單個字元 // * 多個字元 0個或多個 // ** 層級關係 (多級目標)子孫目錄都找到 Resource[] resources1 = rp.getResources("classpath:com/bean*.xml"); Resource[] resources2 = rp.getResources("classpath:com/bean?.xml"); // 找com目錄下的xml文件和 com目錄下,子目錄中的xml文件 Resource[] resources3 = rp.getResources("classpath:com/*/bean.xml"); // 找com目錄下xml文件和com目錄下所有目錄(子孫目錄)的xml文件 Resource[] resources4 = rp.getResources("classpath:com/**/bean.xml"); //BeanFactory factory = new XMLBeanFactory(resource); } }
載入Spring配置文件 applicationContext
applicationContext介面 繼承了ResourcePatternResolver介面 applicationContext是在容器啟動時,就會載入。 applicationContext介面 有三個子類:ClassPathXmlApplicationContext,FileSystemXmlApplicationContext,WebApplicationContext三個子類都可以去找到文件,然後載入,區別是,路徑不一樣。 代碼如下: ApplicationContext context = new ClassPathXmlApplicationContext("classpath:/bean.xml");