Весна загрузки раскроя ConfigurationProperties



Spring boot поставляется со многими классными функциями. Мой любимый - это типобезопасный механизм настройки через @ConfigurationProperties и соответствующие файлы yml / properties. Я пишу библиотеку, которая настраивает подключение Cassandra через драйвер Java Datastax. Я хочу, чтобы разработчики могли настраивать объекты Cluster и Session, просто редактируя файл yml. Это легко в весеннем ботинке. Но я хочу позволить ей / ему настроить несколько соединений таким образом. В PHP framework-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 documentation )



Возможно ли в spring-boot использовать свойства конфигурации? Должен ли я их гнездить?

678   1  

1 ответ:

На самом деле можно использовать типобезопасные вложенные 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 ...

}
См.также справочное руководство и документы привязки конфигурации .

Comments

    Ничего не найдено.