Управление Конфигурацией Имеет Важное Значение ☝️
Необходимость чтения конфигурации чистым, организованным способом быстро растет, особенно с распространением разработки облачных приложений и архитектуры микросервисов, которая требует большого количества настроек интеграции и подключения.
Что Не Так С Типичным Способом Чтения Конфигурации 🤷
Ничего. Однако это может стать сложным и запутанным, когда мы захотим внедрить многие из этих конфигураций в наш код.
Давайте рассмотрим пример с одним файлом свойств и испытание
применение.свойства ⚙️
demo.test.name=testName demo.test.age=16
применение.свойства || ⚙️
@SpringBootTest class DemoApplicationTests { @Value("${demo.test.name}") private String name; @Value("${demo.test.age}") private Integer age; @Test void loadProperty() { assertEquals("testName", name); assertEquals(16, age); } }
Теперь представьте, что у нас есть 5 или 10 таких свойств, из-за которых наш код будет загроможден и труден для понимания 🥴
@Свойства конфигурации Спешат На Помощь 🤠
Это позволяет нам вводить значения из файла application.properties
в пользовательский класс.
@Component @ConfigurationProperties(prefix = "demo.test") @Setter @Getter public class DemoTestConfigs { private String name; private Integer age; }
- Аннотация
@Component
предназначена для указания Spring управлять этим классом как компонентом и предоставлять его для внедрения. @ConfigurationProperties
– это то, что делает волшебство- Он просматривает файлы свойств в пути к классам и загружает свойства, начинающиеся с
demo.test
- Он просматривает файлы свойств в пути к классам и загружает свойства, начинающиеся с
- Ломбок
@@Setter
предназначен для включения@ConfigurationProperties
для заполнения значений вКонфигурациях демонстрационного теста
класс.
Затем мы можем просто внедрить компонент демонстрационных тестовых конфигураций в наши сервисы. 🤝
Давайте проверим это в тесте
@SpringBootTest public class ConfigurationPropertiesTest { @Autowired private DemoTestConfigs demoTestConfigs; @Test public void loadPropertiesUsingConfigurationProperties(){ assertEquals("testName", demoTestConfigs.getName()); assertEquals(16, demoTestConfigs.getAge()); } }
Вывод 👇
Мы видели, как @ConfigurationProperties
помогает нам объединить наши аналогичные конфигурации в единый класс компонентов, который мы можем вводить и использовать вместо указания каждого из них.
Код На GitHub 💻
Оригинал: “https://dev.to/jarjanazy/read-spring-configs-like-a-pro-1do3”