真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

SpringBoot配置元數(shù)據(jù)的方法

本篇文章為大家展示了SpringBoot配置元數(shù)據(jù)的方法,內(nèi)容簡(jiǎn)明扼要并且容易理解,絕對(duì)能使你眼前一亮,通過(guò)這篇文章的詳細(xì)介紹希望你能有所收獲。

江門ssl適用于網(wǎng)站、小程序/APP、API接口等需要進(jìn)行數(shù)據(jù)傳輸應(yīng)用場(chǎng)景,ssl證書未來(lái)市場(chǎng)廣闊!成為創(chuàng)新互聯(lián)建站的ssl證書銷售渠道,可以享受市場(chǎng)價(jià)格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:18980820575(備注:SSL證書合作)期待與您的合作!

前言

在編寫 Spring Boot 應(yīng)用程序時(shí),將配置屬性映射到 Java bean 上是非常有用的。但是,記錄這些屬性的最好方法是什么呢?

在本教程中,我們將探討 Spring Boot Configuration Processor 和 關(guān)聯(lián)的 JSON 元數(shù)據(jù)文件,該 JSON 文檔記錄每個(gè)屬性的含義、約束等。

配置元數(shù)據(jù)

作為開(kāi)發(fā)人員,我們開(kāi)發(fā)的大多數(shù)應(yīng)用程序在某種程度上必須是可配置的。但是在通常情況下,我們并不能夠真正的理解配置參數(shù)的作用,比如它有默認(rèn)值,又或者是過(guò)時(shí)的,有時(shí)我們甚至不知道該屬性的存在。

為了幫助我們理清楚,Spring Boot 生成了配置元數(shù)據(jù)的 JSON 文件,為我們提供關(guān)于如何使用屬性的有用信息。所以,配置元數(shù)據(jù)是一個(gè)描述性文件,它包含與配置屬性交互所需的必要信息。

這個(gè)文件的真正好處是IDE也可以讀取它,從而為我們自動(dòng)配置完成Spring屬性以及其他配置提示。

依賴

為了生成此配置元數(shù)據(jù),我們將使用 spring-boot-configuration-processor 的依賴.

因此,讓我們繼續(xù)將依賴項(xiàng)添加為可選依賴 :

   org.springframework.boot  spring-boot-configuration-processor  2.1.7.RELEASE  true

這種依賴關(guān)系將為我們提供在構(gòu)建項(xiàng)目時(shí)調(diào)用的 Java 注解處理器。我們稍后會(huì)詳細(xì)討論這個(gè)問(wèn)題。

為了防止 @ConfigurationProperties 不應(yīng)用于我們的項(xiàng)目使用的其他模塊,在 Maven 中添加依賴項(xiàng)為可選依賴 是最好的做法。

配置屬性示例

現(xiàn)在來(lái)研究處理器是怎么工作的,我們需要使用 Java bean 獲取在 Spring Boot 應(yīng)用程序中包含一些屬性:

@Configuration@ConfigurationProperties(prefix = "database")public class DatabaseProperties {    public static class Server {    private String ip;    private int port;        // standard getters and setters  }  private String username;  private String password;  private Server server;    // standard getters and setters}

要做到這一點(diǎn),我們可以使用 @ConfigurationProperties 注解。配置處理器會(huì)掃描使用了此注解的類和方法,用來(lái)訪問(wèn)配置參數(shù)并生成配置元數(shù)據(jù)。

讓我們將這些屬性添加到屬性文件中。在示例中,我們把文件命名為 databaseproperties-test.properties:

#Simple Propertiesdatabase.username=baeldungdatabase.password=password

我們還將添加一個(gè)測(cè)試,以確保我們都做對(duì)了:

@RunWith(SpringRunner.class)@SpringBootTest(classes = AnnotationProcessorApplication.class)@TestPropertySource("classpath:databaseproperties-test.properties")public class DatabasePropertiesIntegrationTest {  @Autowired  private DatabaseProperties databaseProperties;  @Test  public void whenSimplePropertyQueriedThenReturnsPropertyValue()    throws Exception {    Assert.assertEquals("Incorrectly bound Username property",      "baeldung", databaseProperties.getUsername());    Assert.assertEquals("Incorrectly bound Password property",      "password", databaseProperties.getPassword());  }}

我們通過(guò)內(nèi)部類 Server 還添加了嵌套屬性 database.server.id 和 database.server.port 。我們應(yīng)該添加內(nèi)部類 Server 以及一個(gè) server 的屬性并且生成他的 getter 和 setter 方法。

在我們的測(cè)試中,讓我們快速檢查一下,確保我們也可以成功地設(shè)置和讀取嵌套屬性:

@Testpublic void whenNestedPropertyQueriedThenReturnsPropertyValue()  throws Exception {  Assert.assertEquals("Incorrectly bound Server IP nested property",   "127.0.0.1", databaseProperties.getServer().getIp());  Assert.assertEquals("Incorrectly bound Server Port nested property",    3306, databaseProperties.getServer().getPort());}

好了,現(xiàn)在我們準(zhǔn)備使用處理器了。

生成配置元數(shù)據(jù)

我們?cè)谇懊嫣岬竭^(guò),配置處理器生成一個(gè)文件 – 它是使用注解處理實(shí)現(xiàn)的。

所以,在項(xiàng)目編譯之后,我們將在目錄 target/classes/META-INF 下看到文件名為 spring-configuration-metadata.json 的文件:

{ "groups": [  {   "name": "database",   "type": "com.baeldung.autoconfiguration.annotationprocessor.DatabaseProperties",   "sourceType": "com.baeldung.autoconfiguration.annotationprocessor.DatabaseProperties"  },  {   "name": "database.server",   "type": "com.baeldung.autoconfiguration.annotationprocessor.DatabaseProperties$Server",   "sourceType": "com.baeldung.autoconfiguration.annotationprocessor.DatabaseProperties",   "sourceMethod": "getServer()"  } ], "properties": [  {   "name": "database.password",   "type": "java.lang.String",   "sourceType": "com.baeldung.autoconfiguration.annotationprocessor.DatabaseProperties"  },  {   "name": "database.server.ip",   "type": "java.lang.String",   "sourceType": "com.baeldung.autoconfiguration.annotationprocessor.DatabaseProperties$Server"  },  {   "name": "database.server.port",   "type": "java.lang.Integer",   "sourceType": "com.baeldung.autoconfiguration.annotationprocessor.DatabaseProperties$Server",   "defaultValue": 0  },  {   "name": "database.username",   "type": "java.lang.String",   "sourceType": "com.baeldung.autoconfiguration.annotationprocessor.DatabaseProperties"  } ], "hints": []}

接下來(lái),讓我們看看更改 Java bean 上的注解如何影響元數(shù)據(jù)。

關(guān)于配置元數(shù)據(jù)的其他信息

首先,讓我們將 JavaDoc 注釋添加到 Server 上.

第二,讓我們給出一個(gè) database.server.port 字段的默認(rèn)值并最后添加 @Min 和 @Max 注解:

public static class Server {  /**   * The IP of the database server   */  private String ip;  /**   * The Port of the database server.   * The Default value is 443.   * The allowed values are in the range 400-4000.   */  @Min(400)  @Max(800)  private int port = 443;  // standard getters and setters}

如果我們檢查 spring-configuration-metadata.json 文件,我們將看到這些額外的信息得到了反映:

{ "groups": [  {   "name": "database",   "type": "com.baeldung.autoconfiguration.annotationprocessor.DatabaseProperties",   "sourceType": "com.baeldung.autoconfiguration.annotationprocessor.DatabaseProperties"  },  {   "name": "database.server",   "type": "com.baeldung.autoconfiguration.annotationprocessor.DatabaseProperties$Server",   "sourceType": "com.baeldung.autoconfiguration.annotationprocessor.DatabaseProperties",   "sourceMethod": "getServer()"  } ], "properties": [  {   "name": "database.password",   "type": "java.lang.String",   "sourceType": "com.baeldung.autoconfiguration.annotationprocessor.DatabaseProperties"  },  {   "name": "database.server.ip",   "type": "java.lang.String",   "description": "The IP of the database server",   "sourceType": "com.baeldung.autoconfiguration.annotationprocessor.DatabaseProperties$Server"  },  {   "name": "database.server.port",   "type": "java.lang.Integer",   "description": "The Port of the database server. The Default value is 443.    The allowed values are in the range 400-4000",   "sourceType": "com.baeldung.autoconfiguration.annotationprocessor.DatabaseProperties$Server",   "defaultValue": 443  },  {   "name": "database.username",   "type": "java.lang.String",   "sourceType": "com.baeldung.autoconfiguration.annotationprocessor.DatabaseProperties"  } ], "hints": []}

我們可以找到 database.server.ip 和 database.server.port 屬性的不同之處。事實(shí)上,額外的信息是非常有幫助的。開(kāi)發(fā)人員和 IDE 都更容易理解每個(gè)屬性的功能。

我們還應(yīng)該確保觸發(fā)構(gòu)建以獲得更新的文件。在Eclipse中,如果選中“自動(dòng)構(gòu)建”選項(xiàng),則每個(gè)保存操作都會(huì)觸發(fā)一次構(gòu)建。在 IntelliJ 中,我們應(yīng)該手動(dòng)觸發(fā)構(gòu)建。

理解元數(shù)據(jù)格式

讓我們仔細(xì)看看 JSON 元數(shù)據(jù)文件,并討論其組成。

Groups 是用于分組其他屬性的較高級(jí)別的項(xiàng),而不指定值本身。在我們的例子中,我們有數(shù)據(jù)庫(kù)組,它也是配置屬性的前綴。我們還有一個(gè) database 組,它是通過(guò)內(nèi)部類把 IP 和 port 屬性作為一個(gè)組。

屬性是可以為其指定值的配置項(xiàng)。這些屬性配置在后綴為 .properties或 .yml* 文件中,并且可以有額外的信息,比如默認(rèn)值和驗(yàn)證,就像我們?cè)谏厦娴氖纠锌吹降哪菢印?/p>

提示是幫助用戶設(shè)置屬性值的附加信息。例如,如果我們有一組屬性的允許值,我們可以提供每個(gè)屬性的描述。IDE 將為這些提示提供自動(dòng)選擇的幫助。

配置元數(shù)據(jù)上的每個(gè)組成都有自己的屬性。來(lái)解釋配置屬性的詳細(xì)用法。

我們介紹了 Spring Boot 配置處理器及其創(chuàng)建配置元數(shù)據(jù)的功能。使用此元數(shù)據(jù)可以更輕松地與配置參數(shù)進(jìn)行交互。

我們給出了一個(gè)生成的配置元數(shù)據(jù)的示例,并詳細(xì)解釋了它的格式和組成。

我們還看到了 IDE 上的自動(dòng)完成支持是多么有幫助。

上述內(nèi)容就是SpringBoot配置元數(shù)據(jù)的方法,你們學(xué)到知識(shí)或技能了嗎?如果還想學(xué)到更多技能或者豐富自己的知識(shí)儲(chǔ)備,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。


本文題目:SpringBoot配置元數(shù)據(jù)的方法
文章地址:http://weahome.cn/article/jhjieo.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部