Весна загрузки раскроя 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 использовать свойства конфигурации? Должен ли я их гнездить?
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