spring boot 加載資源路徑配置和classpath問題


1、spring boot默認加載文件的路徑:

  • /META-INF/resources/
  • /resources/
  • /static/
  • /public/

我們也可以從spring boot源碼也可以看到:

private static final String[] CLASSPATH_RESOURCE_LOCATIONS = { "classpath:/META-INF/resources/", "classpath:/resources/", "classpath:/static/", "classpath:/public/" }; 

2、Classpath含義

  1. 存放各種資源配置文件 eg.init.properties log4j.properties struts.xml
  2. 存放模板文件 eg.actionerror.ftl
  3. 存放class文件對應的是項目開發時的src目錄編譯文件

總結:這是一個定位資源的入口 
一般java項目中 classpath存在與 WEB-INFO/目錄。 
當我們需要某個class時,系統會自動在CLASSPATH里面搜索,如果是jar,就自動從jar里面查找,如果是普通的目錄,則在目錄下面按照package進行查找。 
但與PATH不同的是,默認的CLASSPATH是不包含當前目錄的,這也是CLASSPATH里面要包含一個點的道理了。

Tomcat下的Web應用有兩個預置的classpath : WEB-INF/classes 和WEB-INF/lib啟動項目,項目就會加載這兩個目錄里的數據。這是war包的規范.要改變預置的classpath比較麻煩,在Tomcat的配置文件里沒有發現類似的配置,要實現自己的classloader才能達到目的。

一個在tomcat中運行的web應用.它的classpath都包括如下目錄: 
我知道的有: 
%tomcat%/lib 
web-inf/lib 
web-inf/classes 
環境變量里的classpath

總結:classpath這是一個定位資源的入口.classpath下 lib的優先級大於classes;

版權聲明:本文為博主原創文章,未經博主允許不得轉載。 https://blog.csdn.net/MRL6140x/article/details/78077942


免責聲明!

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



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