中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Spring?boot讀取外部化怎么配置

發布時間:2022-02-08 16:29:15 來源:億速云 閱讀:141 作者:iii 欄目:開發技術

本篇內容主要講解“Spring boot讀取外部化怎么配置”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“Spring boot讀取外部化怎么配置”吧!

1. Properties / YAML

我們一般會將相關配置信息寫在Properties / YAML文件中,然后在通過某種方式來進行數據的獲取。

比如下圖我就定義了三個參數:

Spring?boot讀取外部化怎么配置

1.1 Environment

首先我們可以通過Environment來進行外部配置信息的加載(Spring Boot中的所有外部化配置都會加載到Environment中)。

首先我們直接通過Autowired注入Environment:

@Autowired
Environment environment;

然后直接獲取數據信息即可。

@RestController
public class ConfigController {

    @Autowired
    Environment environment;

    @GetMapping("/env")
    public String env() {
        return environment.getProperty("name") + "\n";
    }
}

1.2 Value注解

第二種方式就是我們比較常用的注解方式,直接通過注解寫入相應的KEY,獲取對應的value。如果沒有KEY值則啟動的時候會報錯。

@Value("${name}")
private String name;

2. 自定義Properties文件

有的時候可能我們的外部化配置不是寫在application.properties中,而是寫在一些自定義Properties中,那這個時候我們如何通過value注解獲取其中的數據呢?

Spring?boot讀取外部化怎么配置

在上面說environment的時候,我們知道Spring Boot中的所有外部化配置都會加載到Environment中,我們可以在Spring boot構建environment之前對其進行相關的修改。

我們可以通過實現EnvironmentPostProcessor接口并重寫postProcessEnvironment方法來對environment進行修改。

整體流程如下:

實現接口,重寫方法

定義Properties,以及我們需要獲取數據文件的名字。

解析文件將數據添加至environment中

public class CustomEnvironmentPostProcessor implements EnvironmentPostProcessor {

    private final Properties properties = new Properties();

    private String propertiesFile = "custom.properties";

    @Override
    public void postProcessEnvironment(ConfigurableEnvironment environment, SpringApplication application) {
        Resource resource = new ClassPathResource(propertiesFile);
        environment.getPropertySources().addLast(loadProperties(resource));
    }

    private PropertySource<?> loadProperties(Resource resource) {
        if (!resource.exists()) {
            throw new RuntimeException("file not exist");
        }
        try {
            //custom.properties
            properties.load(resource.getInputStream());
            return new PropertiesPropertySource(resource.getFilename(), properties);
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
    }
}

這個時候代碼寫好之后,我們可以通過value注解獲取數據了嗎?我們運行試試。(記得將application.properties中的數據清空)

Spring?boot讀取外部化怎么配置

這個時候我們會發現運行失敗,沒有找到對應key。這是為什么呢?這是由于以上都是我們對Spring boot功能的拓展,做這種功能拓展的時候,我們需要使用到我們的SPI機制,按照拓展規則去定義我們的拓展實現。這樣才能使我們的拓展點生效。

這里和JAVA做SPI機制的實現不一樣,之前做SPI都是創建的全類名文件,然后寫對應的實現類,這邊文件名需要定義為spring.factories。

org.springframework.boot.env.EnvironmentPostProcessor=\
  com.example.springbootzookeeper.CustomEnvironmentPostProcessor

Spring?boot讀取外部化怎么配置

這個時候我們重新運行項目,可以發現成功運行。

3. 其他命令參數

Spring boot 中我們是有很多種外部化配置的方式,比如環境變量、系統變量、命令行參數等。我們在下方演示一種類型的外部化配置:我們可以通過這種-D形式進行外部化配置。value注解后面的key對應-D后面的key。

Spring?boot讀取外部化怎么配置

@Value("${test}")
private String command;

到此,相信大家對“Spring boot讀取外部化怎么配置”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

东宁县| 德安县| 泗阳县| 六安市| 民丰县| 霍城县| 鲁山县| 溧水县| 赞皇县| 耒阳市| 库尔勒市| 班玛县| 山东省| 宝坻区| 广宁县| 明星| 十堰市| 革吉县| 乳源| 天祝| 正镶白旗| 明光市| 崇义县| 胶州市| 上栗县| 汾阳市| 五台县| 罗城| 常德市| 温州市| 鄂托克旗| 财经| 罗定市| 库伦旗| 凯里市| 原阳县| 曲阳县| 浦县| 化隆| 磐安县| 贵州省|