springboot項目獲取根目錄和配置文件加載順序問題


springboo在開發和發布項目時的路徑問題總結如下:

1、springboot獲取當前項目路徑的地址

System.getProperty("user.dir")

輸出目錄:  G:\outshine\wangsoso

2、獲取classes目錄絕對路徑

String path = ClassUtils.getDefaultClassLoader().getResource("").getPath();

String path = ResourceUtils.getURL("classpath:").getPath();

輸出目錄:  /G:/outshine/wangsoso/target/classes/

//如果上傳目錄為/static/images/upload/,則可以如下獲取:
File upload = new File(path.getAbsolutePath(),"static/images/upload/");
if(!upload.exists()) upload.mkdirs();
System.out.println("upload url:"+upload.getAbsolutePath());
//在開發測試模式時,得到的地址為:{項目跟目錄}/target/static/images/upload/
//在打包成jar正式發布時,得到的地址為:{發布jar包目錄}/static/images/upload/

注意:以jar包發布項目時,我們存儲的路徑是與jar包同級的static目錄,因此我們需要在jar包目錄的application.properties配置文件中設置靜態資源路徑,如下所示:

#設置靜態資源路徑,多個以逗號分隔

spring.resources.static-locations=classpath:static/,file:static/

3、配置文件讀取順序

以jar包發布springboot項目時,默認會先使用jar包跟目錄下的application.properties來作為項目配置文件。

如果在不同的目錄中存在多個配置文件,它的讀取順序是:

        1、config/application.properties(項目根目錄中config目錄下)

        2、config/application.yml

        3、application.properties(項目根目錄下)

        4、application.yml

        5、resources/config/application.properties(項目resources目錄中config目錄下)

        6、resources/config/application.yml

        7、resources/application.properties(項目的resources目錄下)

        8、resources/application.yml

注:

     1、如果同一個目錄下,有application.yml也有application.properties,默認先讀取application.properties。

     2、如果同一個配置屬性,在多個配置文件都配置了,默認使用第1個讀取到的,后面讀取的不覆蓋前面讀取到的。

     3、創建SpringBoot項目時,一般的配置文件放置在“項目的resources目錄下”


免責聲明!

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



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