先說:ClassPathXmlApplicationContext
這個(gè)類,默認(rèn)獲取的是WEB-INF/classes/下的路徑,也就是在myeclipse的src下的路徑,所以用這個(gè)是獲取不到WEB-INF下的配置文件的...
下面是幾個(gè)用法,引src下的一個(gè)文件,有以下幾種方式
BeanFactory ac = new ClassPathXmlApplicationContext("applicationContext.xml"); BeanFactory ac = new ClassPathXmlApplicationContext("classpath:applicationContext.xml"); BeanFactory ac = new ClassPathXmlApplicationContext("classpath:/applicationContext.xml"); ac.getBean("beanID");
classpath:和classpath*:的區(qū)別:
classpath: 只能加載一個(gè)配置文件,如果配置了多個(gè),則只加載第一個(gè)
classpath*: 可以加載多個(gè)配置文件,如果有多個(gè)配置文件,就用這個(gè)
BeanFactory ac = new ClassPathXmlApplicationContext(new String[]{"applicationContext.xml","applicationContext-test.xml"}); BeanFactory ac = new ClassPathXmlApplicationContext("classpath*:/applicationContext*.xml"); BeanFactory ac = new ClassPathXmlApplicationContext("classpath*:src/folder/applicationContext*.xml");
再說:FileSystemXmlApplicationContext
這個(gè)類,默認(rèn)獲取的是項(xiàng)目路徑,就是項(xiàng)目名的這級(jí).但是我測試,在myeclipse下,執(zhí)行main方法,獲取配置文件,路徑用WebRoot/WEB-INF/是沒問題的,但是發(fā)布到tomcat下,就怎么配都不成功了,無奈,只能把配置文件全部移到src下了,因?yàn)閾?dān)心發(fā)布到linux上后,又出現(xiàn)路徑問題
下面是幾個(gè)用法,引WEB-INF下的一個(gè)文件,有以下幾種方式
BeanFactory factory = new FileSystemXmlApplicationContext("WebRoot/WEB-INF/applicationContext.xml"); BeanFactory factory = new FileSystemXmlApplicationContext("file:D:/workspace/testproject/WebRoot/WEB-INF/applicationContext.xml");
其中,FileSystemXmlApplicationContext的起始路徑是項(xiàng)目路徑,所以可以直接這樣寫WebRoot/WEB-INF
如果前邊加了file:則說明后邊的路徑就要寫全路徑了,就是絕對(duì)路徑
下面是幾個(gè)用法,引WEB-INF/classes下的一個(gè)文件,有以下幾種方式
BeanFactory factory = new FileSystemXmlApplicationContext("classpath:applicationContext.xml");
這其實(shí)跟ClassPathXmlApplicationContext是一樣的,多個(gè)就加通配符
下面是幾個(gè)用法,引WEB-INF下的多個(gè)文件,有以下幾種方式
BeanFactory factory = new FileSystemXmlApplicationContext(new String[]{"WebRoot/WEB-INF/applicationContext.xml","WebRoot/WEB-INF/applicationContext-test.xml"}); BeanFactory factory = new FileSystemXmlApplicationContext("WebRoot/WEB-INF/applicationContext*.xml"); BeanFactory factory = new FileSystemXmlApplicationContext("file:D:/workspace/testproject/WebRoot/WEB-INF/applicationContext*.xml");
引WEB-INF/classes下的多個(gè)文件,也是一樣的
BeanFactory factory = new FileSystemXmlApplicationContext(new String[]{"classpath:applicationContext.xml","classpath:applicationContext*.xml"}); BeanFactory factory = new FileSystemXmlApplicationContext("classpath*:applicationContext*.xml");
聯(lián)系客服