Доступно в Spring Boot 2.2.6 и Spring Framework 5.2.5, есть дополнительная опция для добавления свойства Dynami c
@DynamicPropertySource
static void dynamicProperties(DynamicPropertyRegistry registry) {
registry.add("spring.application.name", () -> "name");
}
Это можно использовать для настройки любого типа Dynami c свойство и является заменой шаблона инициализатора.
Более крупный пример можно увидеть в блоге Spring,
https://spring.io/blog/2020/03/27/dynamicpropertysource-in-spring-framework-5-2-5-and-spring-boot-2-2-6
Здесь показан этот пример в сочетании с Testcontainers для установки URL-адреса базы данных Dynami c для Neo4J, который работает в контейнере docker,
@SpringBootTest
@Testcontainers
class ExampleIntegrationTests {
@Container
static Neo4jContainer<?> neo4j = new Neo4jContainer<>();
@DynamicPropertySource
static void neo4jProperties(DynamicPropertyRegistry registry) {
registry.add("spring.data.neo4j.uri", neo4j::getBoltUrl);
}
}