Код: Выделить всё
@Slf4j
@Configuration
@ExtendWith(SpringExtension.class)
@ContextConfiguration(classes = TestInjectingProperties.class)
@TestPropertySource("classpath:test.yml")
public class TestInjectingProperties
{
@Getter
@Setter
@ToString
@Configuration
@ConditionalOnProperty("a.b")
@ConfigurationProperties("a.b")
public class AbOptionalProperties
{
private String id;
}
@Getter
@Setter
@ToString
@Configuration
@ConditionalOnProperty("c.d")
@ConfigurationProperties("c.d")
public class CdOptionalProperties
{
private String id;
}
@Getter
@Setter
@ToString
@Configuration
@ConditionalOnProperty("e.f")
@ConfigurationProperties("e.f")
public class EfOptionalProperties
{
private String g;
private String h;
}
@Getter
@Setter
@ToString
@Configuration
@ConditionalOnProperty("e.f")
@ConfigurationProperties("e.f")
public class EfgOptionalProperties
{
private String g;
private String h;
}
@Autowired(required = false)
private AbOptionalProperties abOptionalProperties;
@Autowired(required = false)
private CdOptionalProperties cdOptionalProperties;
@Autowired(required = false)
private CdOptionalProperties efOptionalProperties;
@Autowired(required = false)
private EfgOptionalProperties efgOptionalProperties;
@Test
void testProperties()
{
log.info("ab optional properties = {}", abOptionalProperties);
log.info("cd optional properties = {}", cdOptionalProperties);
log.info("ef optional properties = {}", efOptionalProperties);
log.info("efg optional properties = {}", efgOptionalProperties);
}
}
< /code>
тест на содержимое файла YML: < /p>
a.b:
c.d: null
e.f.g: abc
< /code>
Вывод: < /p>
ab optional properties = TestInjectingProperties.AbOptionalProperties(id=null)
cd optional properties = TestInjectingProperties.CdOptionalProperties(id=null)
ef optional properties = TestInjectingProperties.CdOptionalProperties(id=null)
efg optional properties = null
Подробнее здесь: https://stackoverflow.com/questions/795 ... -incorrect