springboot如何獲取application.yml里值的方法
在項目中,很多時候需要用到一些配置信息,這些信息在測試環(huán)境和生產環(huán)境下可能會有不同的配置,后面根據(jù)實際業(yè)務情況有可能還需要再做修改。我們不能將這些配置在代碼中寫死,最好是寫到配置文件中,比如可以把這些信息寫到 application.yml 文件中。

那么,怎么在代碼里獲取或者使用這個地址呢?有2個方法。
方法一:
我們可以通過@Value 注解的 ${key} 即可獲取配置文件(application.yml)中和 key 對應的 value 值,這個方法適用于微服務比較少的情形

方法二:
在實際項目中,遇到業(yè)務繁瑣,邏輯復雜的情況,需要考慮封裝一個或多個配置類。例如,假如在當前服務中,某個業(yè)務需要同時調用微服務1、微服務2和微服務3。
如果這樣一個個去使用 @Value 注解引入相應的微服務地址的話,太過于繁瑣。
也許實際業(yè)務中,遠遠不止這三個微服務,甚至十幾個都有可能。對于這種情況,我們可以先定義一個 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:

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里的值的文章就介紹到這了,更多相關springboot獲取值內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
Java環(huán)境中MyBatis與Spring或Spring MVC框架的集成方法
和MyBatis類似,Spring或者Spring MVC框架在Web應用程序的運作中同樣主要負責處理數(shù)據(jù)庫事務,這里我們就來看一下Java環(huán)境中MyBatis與Spring或Spring MVC框架的集成方法2016-06-06
Java System類詳解_動力節(jié)點Java學院整理
System類是jdk提供的一個工具類,有final修飾,不可繼承,由名字可以看出來,其中的操作多數(shù)和系統(tǒng)相關。這篇文章主要介紹了Java System類詳解_動力節(jié)點Java學院整理,需要的朋友可以參考下2017-04-04
java實現(xiàn)可視化界面肯德基(KFC)點餐系統(tǒng)代碼實例
這篇文章主要介紹了java肯德基點餐系統(tǒng),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2019-05-05

