Я пытаюсь создать простой пользовательский пружинный загрузчик, который читает свойство в application.properties
:
@EnableConfigurationProperties({ CustomStarterProperties.class })
@Configuration
public class CustomStarterAutoConfiguration {
@Autowired
private CustomStarterProperties properties;
@Bean
public String customStarterMessage() {
return properties.getMessage();
}
}
с его ConfigurationProperties:
@ConfigurationProperties(prefix = "custom.starter")
public class CustomStarterProperties {
private String message;
/* getter and setter */
...
}
Тамтакже соответствующие application.properties
и META-INF/spring.factories
для включения autoconfiguration
.
У меня есть другой проект, который объявляет этот стартер как зависимость и в котором я пишу тест, чтобы увидеть, создан ли Bean customStarterMessage:
@RunWith(SpringRunner.class)
@EnableAutoConfiguration
public class TotoTest {
@Autowired
String customStarterMessage;
@Test
public void loadContext() {
assertThat(customStarterMessage).isNotNull();
}
}
Этот тест не пройден (даже при наличии соответствующего файла application.properties в проекте), поскольку application.properties
, похоже, не читается.
Он хорошо работает с аннотацией @SpringBootTest
вместо @EnableAutoConfiguration
, но я хотел бы понять, почему EnableAutoConfiguration не использует мой файл application.properties, тогда как из моего понимания вся AutoConfiguration Spring основана на свойствах.
Спасибо