Spring Boot配置文件中動態配置運行目錄,jar包路徑


在application.yml/properties中配置Spring Boot工作目錄,配置動態變量

當我們想配置上傳文件的路徑時,如果不想寫絕對路徑,那么就可以配置動態變量

以yaml為例



方法一

使用user.dir,代碼如下:

sub-file-path-win: \upload\
sub-file-path-unix: /upload/
file-path: ${user.dir}#{'${os.name}'.indexOf('Windows')>-1?'${sub-file-path-win}':'${sub-file-path-unix}'}

注意:user.dir為工作目錄,即運行項目時所在的目錄,並不是jar包所在的目錄

比如,在idea中運行,user.dir是項目路徑

當打成jar后,如果運行

[root@localhost ~]# java -jar ./test-0.0.1-SNAPSHOT.jar

那么結果是/root

如果運行

[root@localhost ~]# java -jar /home/springboot/test-0.0.1-SNAPSHOT.jar

那么結果仍是/root,因為運行java時的目錄是~



方法二

使用ApplicationHome,代碼如下:

sub-file-path-win: \upload\
sub-file-path-unix: /upload/
file-path: "#{(new org.springframework.boot.system.ApplicationHome(getClass())).getSource().getParentFile().toString()}#{'${os.name}'.indexOf('Windows')>-1?'${sub-file-path-win}':'${sub-file-path-unix}'}"

Java代碼是:

(new org.springframework.boot.system.ApplicationHome(getClass())).getSource().getParentFile().toString()

這是真正的jar包路徑,和運行命令時的路徑無關

缺點一是在IDEA中運行springboot項目時,結果並不是項目路徑,而是tomcat運行的地方:

C:\Users\UsersName\.m2\repository\org\springframework\spring-beans\5.3.18

二是ApplicationHome只能在springboot java代碼中使用,而不能在單元測試test中使用

大家按需設置,或者做兩套環境




免責聲明!

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



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