Spring學習總結(24)——Spring配置檔案載入路徑總結
1. Spring使用ClassPathXmlApplicationContext 從classpath讀取
ClassPathXmlApplicationContext 預設會去 classPath 路徑下找。classPath 路徑指的就是編譯後的 classes 目錄。
1.1 如果配置檔案在classpath目錄下:
ClassPathXmlApplicationContext tx = new ClassPathXmlApplicationContext("appContext2.xml");
1.2 如果一個包專門用來存配置檔案
ClassPathXmlApplicationContext tx = new ClassPathXmlApplicationContext("//my/config/appContext2.xml");
或者
ClassPathXmlApplicationContext tx = new ClassPathXmlApplicationContext("my/config/appContext2.xml");
其實這兩種都是相對於classpath路徑的路徑
1.3 也可以絕對路徑獲取,但是路徑前要加“file”
BeanFactory beanFactory = new ClassPathXmlApplicationContext("file:E:projectsrcmainesourcesapplicationContext.xml");
2. Spring使用FileSystemXmlApplicationContext載入
FileSystemXmlApplicationContext 預設是去專案的路徑下載入,可以是相對路徑,也可以是絕對路徑,若是絕對路徑,“file:” 字首可以預設。
2.1 使用FileSystemXmlApplicationContext也可以從classpath載入,要在路徑前新增classpath字首
FileSystemXmlApplicationContext tx = new FileSystemXmlApplicationContext("classpath:my/config/appContext2.xml");
2.2 以絕對路徑形式載入
FileSystemXmlApplicationContext tx = new FileSystemXmlApplicationContext("d:/my/config/appContext2.xml");
當然 這裡比較好的做法是程式執行期間動態的算出絕對路徑,避免直接在程式碼裡寫死一個絕對路徑。
3. SpringMvc使用WebApplicationContext
在Web專案中,可以使用ContextLoaderListener 自動裝配ApplicationContext的資訊。
在web.xml檔案中建立監聽器:
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
配置配置檔案路徑
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/config/appContext.xml</param-value>
</context-param>
ContextLoaderListener的作用就是啟動Web容器時,自動裝配ApplicationContext的配置資訊。因為它實現了ServletContextListener這個介面,在web.xml配置這個監聽器,啟動容器時,就會預設執行它實現的方法。
如果在web.xml中不寫任何引數配置資訊,預設的路徑是"/WEB-INF/applicationContext.xml, 在WEB-INF目錄下建立的xml檔案的名稱必須是applicationContext.xml。
如果是要自定義檔名可以在web.xml里加入contextConfigLocation這個context引數: 在<param-value> </param-value>裡指定相應的xml檔名,如果有多個xml檔案,可以寫在一起並以“,”號分隔。
也可以這樣applicationContext-*.xml採用萬用字元,比如這那個目錄下有applicationContext-ibatis-base.xml,
applicationContext-action.xml,applicationContext-ibatis-dao.xml等檔案,都會一同被載入。
4. Java中的路徑讀取
封裝一個方法獲取classpath絕對路徑:
public static String getRealPath(String file) {
String path = PathUtils.class.getClassLoader().getResource(file).getPath();
return path;
}
class.getResource("")要想獲得檔案的路徑,得從最終生成的.class檔案為著手點,再結合相對路徑的概念,就可以準確地定位資原始檔了。不同的IDEbuild出來是不同的位置下的,不過都是以頂層package作為根目錄,比如在Web應用中,有一個WEB-INF的目錄,WEB-INF目錄裡面除了web.xml檔案外,還有一個classes目錄,它就是這個WEB應用的package的頂層目錄,也是所有.class的根目錄“/”,假如clasaes目錄下面有一個mynewfile.txt檔案,它的相對路徑就是"/mynewfile.txt",如果相對路徑不是以"/"開頭,那麼它就是相對於.class的路徑。
class.getClassLoader().getResource 如果是getClassLoader().getResource,路徑前加不加"/"都是可以的,比如Home.class.getClassLoader().getResource("my/config/file1.html")和Home.class.getClassLoader().getResource("/my/config/file1.html")都是可以的。
還有一個getResourceAsStream()方法,引數是與getResouce()方法是一樣的,它相當於你用getResource()取得File檔案後,再new InputStream(file)一樣的結果
ClassPathXmlApplicationContext 預設會去 classPath 路徑下找。classPath 路徑指的就是編譯後的 classes 目錄。
1.1 如果配置檔案在classpath目錄下:
ClassPathXmlApplicationContext tx = new ClassPathXmlApplicationContext("appContext2.xml");
1.2 如果一個包專門用來存配置檔案
ClassPathXmlApplicationContext tx = new ClassPathXmlApplicationContext("//my/config/appContext2.xml");
或者
ClassPathXmlApplicationContext tx = new ClassPathXmlApplicationContext("my/config/appContext2.xml");
其實這兩種都是相對於classpath路徑的路徑
1.3 也可以絕對路徑獲取,但是路徑前要加“file”
BeanFactory beanFactory = new ClassPathXmlApplicationContext("file:E:projectsrcmainesourcesapplicationContext.xml");
2. Spring使用FileSystemXmlApplicationContext載入
FileSystemXmlApplicationContext 預設是去專案的路徑下載入,可以是相對路徑,也可以是絕對路徑,若是絕對路徑,“file:” 字首可以預設。
2.1 使用FileSystemXmlApplicationContext也可以從classpath載入,要在路徑前新增classpath字首
FileSystemXmlApplicationContext tx = new FileSystemXmlApplicationContext("classpath:my/config/appContext2.xml");
2.2 以絕對路徑形式載入
FileSystemXmlApplicationContext tx = new FileSystemXmlApplicationContext("d:/my/config/appContext2.xml");
當然 這裡比較好的做法是程式執行期間動態的算出絕對路徑,避免直接在程式碼裡寫死一個絕對路徑。
3. SpringMvc使用WebApplicationContext
在Web專案中,可以使用ContextLoaderListener 自動裝配ApplicationContext的資訊。
在web.xml檔案中建立監聽器:
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
配置配置檔案路徑
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/config/appContext.xml</param-value>
</context-param>
ContextLoaderListener的作用就是啟動Web容器時,自動裝配ApplicationContext的配置資訊。因為它實現了ServletContextListener這個介面,在web.xml配置這個監聽器,啟動容器時,就會預設執行它實現的方法。
如果在web.xml中不寫任何引數配置資訊,預設的路徑是"/WEB-INF/applicationContext.xml, 在WEB-INF目錄下建立的xml檔案的名稱必須是applicationContext.xml。
如果是要自定義檔名可以在web.xml里加入contextConfigLocation這個context引數: 在<param-value> </param-value>裡指定相應的xml檔名,如果有多個xml檔案,可以寫在一起並以“,”號分隔。
也可以這樣applicationContext-*.xml採用萬用字元,比如這那個目錄下有applicationContext-ibatis-base.xml,
applicationContext-action.xml,applicationContext-ibatis-dao.xml等檔案,都會一同被載入。
4. Java中的路徑讀取
封裝一個方法獲取classpath絕對路徑:
public static String getRealPath(String file) {
String path = PathUtils.class.getClassLoader().getResource(file).getPath();
return path;
}
class.getResource("")要想獲得檔案的路徑,得從最終生成的.class檔案為著手點,再結合相對路徑的概念,就可以準確地定位資原始檔了。不同的IDEbuild出來是不同的位置下的,不過都是以頂層package作為根目錄,比如在Web應用中,有一個WEB-INF的目錄,WEB-INF目錄裡面除了web.xml檔案外,還有一個classes目錄,它就是這個WEB應用的package的頂層目錄,也是所有.class的根目錄“/”,假如clasaes目錄下面有一個mynewfile.txt檔案,它的相對路徑就是"/mynewfile.txt",如果相對路徑不是以"/"開頭,那麼它就是相對於.class的路徑。
class.getClassLoader().getResource 如果是getClassLoader().getResource,路徑前加不加"/"都是可以的,比如Home.class.getClassLoader().getResource("my/config/file1.html")和Home.class.getClassLoader().getResource("/my/config/file1.html")都是可以的。
還有一個getResourceAsStream()方法,引數是與getResouce()方法是一樣的,它相當於你用getResource()取得File檔案後,再new InputStream(file)一樣的結果
相關文章
- Spring Boot 配置檔案總結Spring Boot
- 檔案路徑總結
- 關於spring的配置檔案總結Spring
- (七) Spring學習總結Spring
- Spring Boot + JPA學習總結Spring Boot
- Spring Cloud學習總結(一)SpringCloud
- C#檔案路徑操作總結
- ❀ Spring5學習大總結Spring
- Spring總結--配置驗證碼Spring
- MyBatis配置檔案總結MyBatis
- Spring Boot @PropertySource 載入指定配置檔案、@ImportResource 匯入Spring 配置檔案Spring BootImport
- 慕課網《探秘Spring AOP》學習總結Spring
- dede路徑總結
- Spring AOP總結Spring
- Spring 小總結Spring
- spring 載入配置檔案的方式Spring
- Spring Boot+Mybatis專案總結Spring BootMyBatis
- GoWeb框架Gin學習總結proto檔案GoWeb框架
- MyBatis學習總結(24)——Mybatis常見問題彙總MyBatis
- Spring Cloud使用總結SpringCloud
- Spring Security 使用總結Spring
- springMvc原始碼學習之:spring原始碼總結SpringMVC原始碼
- Web前端入門的學習路線總結Web前端
- 在Spring Boot中從類路徑載入檔案解決方案Spring Boot
- 12 19 spring3 專案總結Spring
- 轉載 hessian學習總結
- 學習總結
- Spring SPI 機制總結Spring
- Spring事務管理總結Spring
- spring cloud 面試題總結SpringCloud面試題
- Spring知識點總結Spring
- webpack + ts 配置路徑別名無死角方法總結Web
- spring boot啟動載入外部配置檔案Spring Boot
- Spring Cloud微服務複習筆記總結SpringCloud微服務筆記
- SpringMVC+Spring+Mybatis配置的簡要總結SpringMVCMyBatis
- spring:spring再總結(ioc、aop、DI等)Spring
- Spring 學習小結Spring
- 【轉載】IEEE754 學習總結