亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Spring不接受環境變量

Spring不接受環境變量

一只萌萌小番薯 2022-07-27 21:20:44
在我的項目中,我在每個環境的每個文件夾中都有單獨的 application.yml 文件。注意:下面是臨時制作的紅色 yml 文件,以使代碼正常工作。但應在修復后將其刪除。所以我想要的是根據環境使用單獨的 application.yml 文件。特別是我需要使用 local/application.yml 進行本地開發下面有一個在我的項目中獲取環境變量的示例@Component@Configurationpublic class ApplicationProperties {    @Value("${ex.my.url}")    private String myServiceUrl;   // getters setters and nedded stuff}但這不起作用,因為找不到提及所需環境的方法。因為它在一個單獨的文件夾中。所有其他示例都提到了在資源文件夾中獲取 yml 文件的方法,沒有單獨的文件夾。有什么辦法解決這個問題嗎?
查看完整描述

4 回答

?
當年話下

TA貢獻1890條經驗 獲得超9個贊

在資源文件夾中

制作 application.yml、application-local.yml、application-dev.yml 等文件。你想要什么

然后在 application.yml

 spring.profile.active = ${ENV}

現在在運行期間從 Intellij 下的運行/調試配置中指定 ENV 變量,或者在 application.yml 中提及您要為其構建 jar 的配置文件。

或者,您可以使用 -D spring.profile.active=dev


查看完整回答
反對 回復 2022-07-27
?
海綿寶寶撒

TA貢獻1809條經驗 獲得超8個贊

經典的解決方案是設置一個配置文件(我更喜歡屬性,因為我很理智)并允許在每個已安裝的主機上放置一個覆蓋文件。


Spring 開箱即用地支持這一點。


這是一個例子:


public static void main(final String[] argumentArray)

{

  final StringApplicationBuilder springApplicationBuilder;


  springApplicationBuilder = new SpringApplicationBuilder(YourSpringBootApplication.class)


  springApplicationBuilder.properties(

    "spring.config.location=classpath:/yourConfig.properties,/some/path/to/overrides/directory/yourConfig.properties");


  springApplicationBuilder.build().run(argumentArray);

}


查看完整回答
反對 回復 2022-07-27
?
心有法竹

TA貢獻1866條經驗 獲得超5個贊

首先,來自文檔

SpringApplication 從以下位置的 application.properties 文件中加載屬性并將它們添加到 Spring 環境中:

  1. 當前目錄的 /config 子目錄

  2. 當前目錄

  3. 一個類路徑 /config 包

  4. 類路徑根

因此,通過傳遞目錄層次結構,您會遇到問題。

其次,對于文件規范,您可以使用Profiles。這工作如下:

  • 如果沒有指定的配置文件 -application.properties將被使用

  • 對于任何其他配置文件,也將使用帶有名稱的配置文件application-<name>.properties

因此,如果您指定devcool配置文件,屬性application.properties,,,application-dev.properties`application-cool.properties,將被使用

更新:

您可以傳遞spring.config.location屬性文件路徑指定,但如果您想要目錄層次結構 - 您需要使用ApplicationContextInitializercontext.initializers.classes進行一些自定義


查看完整回答
反對 回復 2022-07-27
?
紅顏莎娜

TA貢獻1842條經驗 獲得超13個贊

在我的項目中,我使用 VM 選項指定了一個配置文件:-Dspring.profiles.active=local

然后我有一個名為 application-local.yml 的文件

在生產中: -Dspring.profiles.active=prod ,將使用文件 application-prod.yml


查看完整回答
反對 回復 2022-07-27
  • 4 回答
  • 0 關注
  • 190 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號