成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

教你如何在 Spring BOOT 中處理配置

開發 架構
在這篇文章中,我將討論如何在 Spring Boot 應用程序中使用外部化配置。

大約 8 年后,我目前正在重新使用 Java + Spring 進行編碼。在過去的 8 年中,我花在編碼上的時間顯著增加,因為我現在擔任的領導角色讓我遠離了編寫代碼。話雖如此,我需要了解一定程度的編碼,尤其是在 Java 世界中,因為這是我的大部分項目都使用的語言,除非我熟悉編碼,否則我無法有效地幫助我的團隊。自從我停止編碼以來發生了很大的變化,我正在重新學習一切。這是我將寫的許多文章中的第一篇,因為我知道了新事物。此外,我更多地從我個人的成果中構建了一個應用程序。我通常不能花一致的時間,這讓我可以花更多的時間學習,而不是試圖滿足現實生活中客戶項目的最后期限。

在這篇文章中,我將討論如何在 Spring Boot 應用程序中使用外部化配置。

1.概述

我們將使用 Spring Boot 的默認設置來創建一些配置并在我們的應用程序中讀取它們。我們還將研究一種設置屬性和基于 YAML 的配置的簡單鍵值方式。

我更喜歡使用 YAML,從現在開始,我將只使用 YAML 基礎設置。

2. 初始設置

在我的實現運行期間,我注意到我最終需要使用。

spring-boot-configuration-processor 依賴項。否則我會得到一個錯誤,并且代碼不會編譯。我沒有找到太多關于為什么在我的研究中需要這樣做,但是添加這個依賴項為我解決了這個問題。

我添加的第二個依賴項是 Actuator,它為我們提供了一些令人興奮的工具。這是不必要的,但如果您正在尋找調試屬性并找到更多可使用的配置,我建議您也添加它。

<font style="vertical-align: inherit;"><font style="vertical-align: inherit;"><依賴></font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
<groupId>org.springframework.boot</groupId></font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
<artifactId>spring-boot-configuration-processor</artifactId></font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
<可選></可選></font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
</依賴></font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
<依賴></font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
<groupId>org.springframework.boot</groupId></font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
<artifactId>spring-boot-starter-actuator</artifactId></font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
</依賴></font></font>

3. 設置配置文件

以下代碼適用于 application.properties 文件,這是您將在 Spring Boot 中獲得的默認格式。

<font style="vertical-align: inherit;"><font style="vertical-align: inherit;"># 這是為了暴露Actuator的所有端點。</font><font style="vertical-align: inherit;">僅在 DEV 中對所有人使用 *</font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
management.endpoints.web.exposure.include=*</font></font>

# Custom Properties
bungie.rootPath="https://www.bungie.net/Platform"
bungie.apiKey=000999888111

以下是 YAML 格式的相同屬性。

bungie:
rootPath: "https://www.bungie.net/Platform"
apiKey: 000999888111

4. 創建將讀取這些配置的 Bean

現在我們已經創建了屬性,在讀取屬性時我們需要考慮 2 個用例。

  • 讀取一次性屬性——在這種情況下,我們可能需要創建一個需要讀取一次或不能與任何其他屬性分類的屬性。在這種情況下,您可以使用@Value 注解來讀取它。
  • 讀取一組屬性——在我們的示例中,我們已經在“bungie”類別下確定了兩個分組屬性。這就是我更喜歡創建屬性的方式。我不喜歡有孤兒屬性,因此我們只會看到如何設置它們。以下示例將向我們展示如何創建 。 Java Bean/Configuration,它將能夠讀取我們的屬性文件并填充對象。
package io.howtoarchitect.destinyclanwars.config;

import lombok.Getter;
import lombok.Setter;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Configuration;

@Configuration
@ConfigurationProperties("bungie")
@Getter @Setter
public class BungieClientSettings {
private String rootPath;
private String apiKey;
}

如果你觀察上面的代碼塊,你會注意到一些事情:

  • 我們曾經@Configuration讓 Spring 應用程序知道這是一個 bean,應該這樣初始化
  • @Getter并且@Setter來自 Lombok 包,為我們提供了默認的 Getter 和 Setter。這些是強制性的,因為 Spring 應用程序總是需要這些 getter 和 setter。
  • @ConfigurationProperties是這里的主要技巧的注釋。它將遍歷我們上下文中可用的所有屬性,并搜索任何已映射的用戶“bungie”。找到后,此注釋將映射 YAML/Properties 文件值并將它們添加到我們的字符串中。

5. 消費屬性

完成此設置后,最后一步是在我們的應用程序中讀取這些屬性。我們將在另一個 Spring bean/service 中讀取這些屬性。

package io.howtoarchitect.destinyclanwars.bungieclient;

import io.howtoarchitect.destinyclanwars.config.BungieClientSettings;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpHeaders;
import org.springframework.http.MediaType;
import org.springframework.stereotype.Service;
import org.springframework.web.reactive.function.client.WebClient;

@Service
public class BungieClient {
private static WebClient client;

@Autowired
private BungieClientSettings bungieClientSettings;

public WebClient getDefaultClient() {
client = WebClient.builder()
.baseUrl(bungieClientSettings.getRootPath())
.defaultHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON_VALUE)
.defaultHeader("X-API-KEY", bungieClientSettings.getApiKey())
.build();

return client;
}
}

您會注意到我已將其添加BungieClientSettings為@Autowired依賴項。這會在我的類中注入 bean,當我需要訪問這些屬性時,我需要做的就是bungieClientSettings.getAPIKey()和bungieClientSettings.getRootPath()

結論

這就是您需要做的就是將您的屬性外部化。盡早設置這一點很重要,因為如果不這樣做,您最終會將其中許多分散在課堂上,并且遷移到多個環境將變得困難。

責任編輯:武曉燕 來源: 今日頭條
相關推薦

2022-11-28 08:23:14

IDEAGradle配置

2025-03-28 08:34:34

2024-10-10 15:08:40

2021-09-03 09:06:42

代碼時間開發

2021-08-06 08:04:14

Spring Boot自動配置

2022-07-26 16:54:08

QuartzJava

2024-12-03 08:00:00

2010-07-02 10:18:23

ucd-snmpMIB

2017-05-09 10:34:21

Spring BootDubbo Activ擴展

2009-07-28 08:39:56

Linux應用軟件Linux應用

2011-03-21 12:41:41

JavaScript

2025-02-05 10:02:03

Locust測試異常處理

2025-01-21 15:20:14

2017-03-23 09:29:06

2022-06-02 10:38:42

微服務數據源分布式

2021-02-26 15:10:00

前端React組件交互

2021-04-04 22:56:47

Linux循環用戶

2023-10-31 08:32:59

2009-09-25 11:06:38

Hibernate實例

2024-10-11 18:31:14

點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 欧美日韩在线免费 | 一区二区在线免费播放 | 亚洲日本一区二区三区四区 | 国产欧美精品一区二区色综合 | 国产精品一区二区电影 | 欧美aaaaaaaaaa | 日韩一级免费观看 | 在线中文视频 | 欧美精品在线观看 | 欧美一区二区在线 | 精品美女视频在线观看免费软件 | 国产98色在线 | 日韩 | 午夜寂寞影院在线观看 | 精品久久香蕉国产线看观看亚洲 | japanhdxxxx裸体 | 一区二区三区亚洲 | 妞干网视频 | 国产精品1区2区3区 欧美 中文字幕 | 黄色在线免费观看视频网站 | 国产 日韩 欧美 在线 | 夜夜爽99久久国产综合精品女不卡 | 成人国产一区二区三区精品麻豆 | 婷婷国产一区 | 国产乱性 | 在线观看av免费 | 亚洲第一视频 | 国产精品极品美女在线观看免费 | 欧美精品欧美精品系列 | 亚洲欧美一区二区三区视频 | 国产亚洲精品久久久久久牛牛 | 男人影音 | 日本久久福利 | 在线观看视频91 | 免费a v网站 | 特黄特黄a级毛片免费专区 av网站免费在线观看 | 奇米在线| 亚洲一区二区三区在线 | 午夜免费网站 | 国产xxxx岁13xxxxhd| 欧美精品国产一区二区 | 成人av在线播放 |