Предположим, у нас есть приложение Spring Boot и мы хотим загрузить только определенный фрагмент контекста приложения.
В частности, загрузите конфигурацию файла YAML и сопоставьте spring.datasource
с DataSourceProperties
, отмеченным @ConfigurationProperties
.
Наивное не рабочее объявление теста:
@RunWith(SpringRunner.class)
@ContextConfiguration(
classes = {DataSourceAutoConfiguration.class, DataSourceProperties.class},
loader = AnnotationConfigContextLoader.class,
initializers = ConfigFileApplicationContextInitializer.class)
@TestPropertySource({"classpath:application.yaml", "classpath:application-dev.yaml"})
@EnableConfigurationProperties({DataSourceProperties.class})
@Slf4j
public class HibernateTest {
@Autowired
private DataSourceProperties dataSourceProperties;
@Test
public void dataSourceTest() throws SQLException {
log.info("DS URL: {}", dataSourceProperties.getUrl());
}
}
application-dev.yaml
имеет:
spring.datasource:
url: jdbc:oracle:thin:@localhost:1521/APP
Тестовые отпечатки:
DS URL: null
Я ищу способ сопоставить конфигурацию YAML с @ConfigurationProperties
помеченным классом (DataSourceProperties
) и использовать его @Configuration
классом (DataSourceAutoConfiguration
) без загрузки каких-либо других служб / компонентов / и т. Д. ...