[英]Spring Boot - nesting ConfigurationProperties
Spring Boot 帶有許多很酷的功能。 我最喜歡的是通過@ConfigurationProperties
和相應的yml/properties 文件的類型安全配置機制。 我正在編寫一個通過 Datastax Java 驅動程序配置 Cassandra 連接的庫。 我想讓開發人員通過簡單地編輯 yml 文件來配置Cluster
和Session
對象。 這在 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.