Spring——WEB專案web.xml檔案中classpath: 跟classpath*:使用的區別
首先 classpath是指 WEB-INF資料夾下的classes目錄
classpath 和 classpath* 區別:
classpath:只會到你指定的class路徑中查詢檔案;
classpath*:不僅包含class路徑,還包括jar檔案中(class路徑)進行查詢.舉個簡單的例子
在我的web.xml中是這麼定義的:classpath*:META-INF/spring/application-context.xml
那麼在META-INF/spring這個資料夾底下的所有application-context.xml都會被載入到上下文中,這些包括META-INF/spring資料夾底下的 application-context.xml,META-INF/spring的子資料夾的application-context.xml以及jar中的application-context.xml。
如果我在web.xml中定義的是:classpath:META-INF/spring/application-context.xml
那麼只有META-INF/spring底下的application-context.xml會被載入到上下文中。專案實踐中用的比較多就是在web.xml檔案中配置spring監聽器,讓它讀取*.xml檔案,載入其中的bean.
舉例如下
首先:在ssh框架搭建好之後,在web.xml檔案中進行如下配置
- 這裡使用的是classpath*:的形式**
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath*:ssh2-*.xml</param-value>
</context-param>
<!--配置spring的context監聽器 -->
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener </listener-class>
</listener>
- 使用一般classpath的形式:
<!--spring監聽器-->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:bean.xml</param-value >
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
在專案的.classpath檔案中有如下的配置
補充:
1.)關於.classpath檔案的檢視可以去專案存放的位置(workplace)下檢視,也可以在eclipse中navigator檢視中進行檢視
2.)navigator檢視是在window—->show view—–>other——>navigator中可以找到.
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<!--系統預設的class檔案載入路徑,不能夠刪除-->
<classpathentry kind="src" path="src"/>
<!--自己新新增的class檔案載入路徑-->
<!--<classpathentry kind="src" path="config"/>-->
這裡可以新增classpath的路徑,例如我的配置檔案路徑時放在了與src同級的目錄下,你也可以指定自己的檔案存放路徑.
專案啟動時候,系統會依據.classpath檔案中指定的src的路徑依次查詢所要載入的配置檔案。並載入其中的bean.