springboot獲取當前項目路徑的地址spring
System.getProperty("user.dir")springboot
輸出目錄: G:\outshine\wangsosoapp
//獲取classes目錄絕對路徑測試
String path = ClassUtils.getDefaultClassLoader().getResource("").getPath();url
String path = ResourceUtils.getURL("classpath:").getPath();spa
輸出目錄: /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配置文件中設置靜態資源路徑,以下所示:get
#設置靜態資源路徑,多個以逗號分隔io
spring.resources.static-locations=classpath:static/,file:static/
以jar包發佈springboot項目時,默認會先使用jar包跟目錄下的application.properties來做爲項目配置文件。
若是在不一樣的目錄中存在多個配置文件,它的讀取順序是:
一、config/application.properties(項目根目錄中config目錄下)
二、config/application.yml
三、application.properties(項目根目錄下)
四、application.yml
五、resources/config/application.properties(項目resources目錄中config目錄下)
六、resources/config/application.yml
七、resources/application.properties(項目的resources目錄下)
八、resources/application.yml
注:
一、若是同一個目錄下,有application.yml也有application.properties,默認先讀取application.properties。
二、若是同一個配置屬性,在多個配置文件都配置了,默認使用第1個讀取到的,後面讀取的不覆蓋前面讀取到的。
三、建立SpringBoot項目時,通常的配置文件放置在「項目的resources目錄下」