配置掃描路徑詳細說明 * ** ?的含義


Java代碼    收藏代碼
  1. org.springframework.core.io.supportClassPathMatchingResourcePatternResolver  
Java代碼    收藏代碼
  1. org.springframework.utilClass AntPathMatcher  

所有的配置官方說明請參照這兩個類

在web.xml配置spring的配置文件

 

Xml代碼    收藏代碼
  1. <context-param>  
  2.         <param-name>contextConfigLocation</param-name>  
  3.         <param-value>這里寫路勁</param-value>  
  4. </context-param>  

首先上幾種寫法(這個是spring的api復制的)

 

Java代碼    收藏代碼
  1. 1. /WEB-INF/*-context.xml 
  2. 2. com/mycompany/**/applicationContext.xml  
  3. 3. file:C:/some/path/*-context.xml 
  4. 4. classpath:com/mycompany/**/applicationContext.xml  
 

這些路徑看起來很亂有木有

這里要說明一點,不要以為路徑中的匹配符號是正則表達式(開始我是這樣想的),這些符號的完整定義

----------------------------------------------------------------------

?    匹配一個任意字符   aa?  可以匹配  aa1  aab  但是不能匹配aa

*    匹配零個或者多個字符  aa* 可以匹配 aa1 aab  aa aaa

**  兩個**不要以為是上面那個* 寫兩個的意思。 它的意思是匹配任意個路徑 aa/**/bb  可以匹配aa/b/c/bb   aa/bb

aa  和bb之間可以個任意目錄

----------------------------------------------------------------------

 

1.會查找到WEB-INF目錄下的以"-context.xml"結尾的文件  在WEB-INF下的 a-context.xml b-context.xml都會被找到

2.com/mycompany/目錄下所有的applicationContext.xml都會被找到

3.file 表示會根據文件系統的路徑查找 這個條會找到 c盤下的/some/path目錄以"-context.xml"的文件都會被找到

4.查找classpath下的com/mycompany/包中所有子包的applicationContext.xml文件 

 

這個東西卻是搞的有點復雜了。

 

 

完了嗎 ? 還沒有 還有classpath classpath*  [注意*

 

示例1:  classpath*:config/applicationContext.xml    //: 查找本項目的classpath以及Jar包的classpath目錄下的匹配的文件.

示例2:  classpath:config/applicationContext.xml     //查找本項目的classpath 目錄下的匹配的文件.


區別是神馬?classpath還有classpathaa或者classpathbb 不會呀,java只有classpath,那,那個*是神馬意思。。。。 

我告訴你:

classpath*中的*並非 匹配零或者多個字符的那個*  (太亂了有木有)


classpath*是一種特殊的表示方法  ,它告訴spring找配置文件的時候WEB-INF/LIB中的jar文件也要找

classpath*:applicationContext.xml會找到所有jar文件根目錄的applicationContext.xml文件,當然也包括classpath中的applicationContext.xml

這里有一點要注意  classpath*如果要在jar文件的根目錄查找  就不能使用上面的那種模糊匹配,比如

classpath*:app*.xml 這樣只能找到classpath下的app開頭*.xml結尾的配置文件, 效果和classpath:app*.xml一樣,jar中的會被忽略

如果想查找jar中的配置文件就把配置文件放在jar文件的根目錄下級下的目錄(包括下級) 例如

jar文件中springConfig/applicationContext.xml,  springConfig/applicationAA.xml

可以使用 classpath*:springConfig/app*.xml找到這兩個配置文件.

總之要找到jar文件中的配置文件,還要使用模糊匹配,配置文件就應該在jar文件根目錄除外的其他任何地方,然后根據路徑名稱模糊匹配即可找到







免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM