簡體   English   中英

Spring Boot - 嵌套 ConfigurationProperties

[英]Spring Boot - nesting ConfigurationProperties

Spring Boot 帶有許多很酷的功能。 我最喜歡的是通過@ConfigurationProperties和相應的yml/properties 文件的類型安全配置機制。 我正在編寫一個通過 Datastax Java 驅動程序配置 Cassandra 連接的庫。 我想讓開發人員通過簡單地編輯 yml 文件來配置ClusterSession對象。 這在 spring-boot 中很容易。 但我想允許她/他以這種方式配置多個連接。 在 PHP 框架 - Symfony 中,它很簡單:

doctrine:
  dbal:
    default_connection: default
    connections:
      default:
        driver:   "%database_driver%"
        host:     "%database_host%"
        port:     "%database_port%"
        dbname:   "%database_name%"
        user:     "%database_user%"
        password: "%database_password%"
        charset:  UTF8
      customer:
        driver:   "%database_driver2%"
        host:     "%database_host2%"
        port:     "%database_port2%"
        dbname:   "%database_name2%"
        user:     "%database_user2%"
        password: "%database_password2%"
        charset:  UTF8

(此片段來自Symfony 文檔

是否可以在 spring-boot 中使用 ConfigurationProperties? 我應該嵌套它們嗎?

您實際上可以使用類型安全的嵌套ConfigurationProperties

@ConfigurationProperties
public class DatabaseProperties {

    private Connection primaryConnection;

    private Connection backupConnection;

    // getter, setter ...

    public static class Connection {

        private String host;

        // getter, setter ...

    }

}

現在您可以設置屬性primaryConnection.host

如果您不想使用內部類,則可以使用@NestedConfigurationProperty注釋字段。

@ConfigurationProperties
public class DatabaseProperties {

    @NestedConfigurationProperty
    private Connection primaryConnection; // Connection is defined somewhere else

    @NestedConfigurationProperty
    private Connection backupConnection;

    // getter, setter ...

}

另請參閱參考指南配置綁定文檔

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM