SpringBoot項目啓動參數idea設置

一、背景

公司使用SpringCloud+SpringBoot構建微服務,使用Spring Cloud Config作爲統一的配置中心。在開發的時候出現了這樣一個情景:新起了一個項目,然後需要我來接手,但是起初只給了我開發的項目的權限而並沒有給我對應的配置中心的權限,而在開發過程中代碼需要使用配置文件的屬性值,但是目前並沒有對應的屬性值,這樣項目就啓動不起來。所以需要在沒拿到配置中心權限的這兩天,開發中需要解決該問題。而解決該問題首先需要了解SpringBoot的屬性加載順序。

二、SpringBoot屬性加載順序

順序   形式
1 在命令行中傳入的參數
2 SPRING_APPLICATION_JSON中的屬性。SPRING_APPLICATION_JSON是以JSON的格式配置在系統環境變量中的內容
3 java:comp/env中的JNDI屬性
4 Java的系統屬性,可以通過System.getProperties()獲得的內容
5 操作系統的環境變量
6 通過random.*配置的隨機屬性
7 位於當前應用jar包之外,針對不同{profile}環境的配置文件內容,例如application-{profile}.properties或是YAML定義的配置文件
8 位於當前應用jar包之內,針對不同{profile}環境的配置文件內容,例如application-{profile}.properties或是YAML定義的配置文件
9 位於當前應用jar包之外的application.properties和YAML配置內容
10 位於當前應用jar包之內的application.properties和YAML配置內容
11 在@Configuration註解修改的類中,通過@PropertySource註解定義的屬性
12 應用默認屬性,使用SpringApplication.setDefaultProperties定義的內容

那麼現在有這幾種解決方案:

  1. 直接在本地配置一套,使用本地配置(根據屬性加載順序,遠程加載不到,那麼纔到本地加載)
  2. 使用1~6優先級的形式設置所缺的屬性

第一種方案可以,但是git在提交時會提示更改,而配置文件不應該添加到.gitignore,所以,對不起,我不能接受代碼的凌亂感。我選擇第二鍾,並且將配置屬性通過啓動參數的形式注入到項目中,下次我不想要個直接刪了即可,同時也不影響git的status,乾淨。

三、IDEA項目啓動參數配置

點擊項目下拉按鈕後選擇"Edit Configurations"

在"Configuration"下的VM options中填入需要的屬性值

填寫的格式如下:

-Dserver.port=8888 -Dspring.redis.port=6378 -D"你想配置的參數名"="參數值"

多個參數之間使用空格隔開。當然你也可以使用環境變量(Environment variables)和 Program arguments添加。 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章