首頁  >  文章  >  Java  >  springboot怎麼取得application.yml裡值

springboot怎麼取得application.yml裡值

WBOY
WBOY轉載
2023-06-03 18:43:131658瀏覽

在專案中,很多時候需要用到一些配置信息,這些信息在測試環境和生產環境下可能會有不同的配置,後面根據實際業務情況有可能還需要再做修改。我們不能將這些配置在程式碼中寫死,最好是寫到設定檔中,例如可以把這些資訊寫到 application.yml 檔案中。

springboot怎麼取得application.yml裡值

那麼,怎麼在程式碼裡取得或使用這個位址?有2個方法。

方法一:

我們可以透過@Value 註解的${key} 即可取得設定檔(application.yml)中和key 對應的value 值,這個方法適用於微服務比較少的情形

springboot怎麼取得application.yml裡值

方法二:

在實際專案中,遇到業務繁瑣,邏輯複雜的情況,需要考慮封裝一個或多個配置類別。例如,如果一個業務需要同時使用微服務1、微服務2和微服務3,那麼這些微服務將會被呼叫。

如果這樣一個個去使用 @Value 註解引入對應的微服務位址的話,太過於繁瑣。

也許實際業務中,遠遠不止這三個微服務,甚至十幾個都有可能。對於這種情況,我們可以先定義一個MicroServiceUrl 類別來專門保存微服務的URL

import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;

@Component
@ConfigurationProperties(prefix = "url")
public class MicroServiceUrl {

private String orderUrl;
private String userUrl;
private String shoppingUrl;

public String getOrderUrl() {
return orderUrl;
}

public void setOrderUrl(String orderUrl) {
this.orderUrl = orderUrl;
}

public String getUserUrl() {
return userUrl;
}

public void setUserUrl(String userUrl) {
this.userUrl = userUrl;
}

public String getShoppingUrl() {
return shoppingUrl;
}

public void setShoppingUrl(String shoppingUrl) {
this.shoppingUrl = shoppingUrl;
}
}

新增依賴:

<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<optional>true</optional>
</dependency>

目前配置寫好了,此時,不需要在程式碼中一個個引入這些微服務的URL,直接透過@Resource 註解將剛剛寫好的設定類別注入進來即可使用了,以下是測試Controller:

springboot怎麼取得application.yml裡值

import com.example.test1.config.MicroServiceUrl;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;

/**
* 获取配置文件(application.yml)中和 key 对应的 value 值
* 2种方法
*/
@RestController
@RequestMapping("/test")
public class ConfigController {

private static final Logger LOGGER = LoggerFactory.getLogger(ConfigController.class);

@Value("${url.orderUrl}")
private String orderUrl;

@Resource
private MicroServiceUrl microServiceUrl;

@RequestMapping("/config")
public String testConfig() {
LOGGER.info("获取的地址为:{}", orderUrl);
LOGGER.info("微服务1地址为:{}", microServiceUrl.getOrderUrl());
LOGGER.info("微服务2地址为:{}", microServiceUrl.getUserUrl());
LOGGER.info("微服务3地址为:{}", microServiceUrl.getShoppingUrl());
return "success";
}
}

以上是springboot怎麼取得application.yml裡值的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:yisu.com。如有侵權,請聯絡admin@php.cn刪除