1. 程式人生 > >Spring——WEB專案web.xml檔案中classpath: 跟classpath*:使用的區別

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.