91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

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

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

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

乌审旗| 太白县| 庄河市| 聂荣县| 青铜峡市| 桐乡市| 宁都县| 县级市| 班戈县| 大邑县| 昭通市| 安阳县| 武夷山市| 酉阳| 贵阳市| 宿松县| 车致| 扶沟县| 唐山市| 渝中区| 繁昌县| 乐东| 孙吴县| 西昌市| 河东区| 新丰县| 芒康县| 健康| 多伦县| 广丰县| 丁青县| 西藏| 北京市| 饶河县| 青阳县| 临清市| 泌阳县| 勐海县| 石屏县| 孝感市| 隆回县|