false
中不推荐使用 @ConfigurationProperties
locations
,现在1.4.x
我这样使用它:BucketTestConfig.java
就目前的弃用情况而言,我尝试为production code和test code设置系统属性1.5.x
作为替代方案。
spring.config.location
仍然失败,尽管我设置了系统属性。
在这种情况下,已弃用./gradlew clean test
@ConfigurationProperties
的最佳替代方法是什么?
使用SpringApplicationBuilder.properties()
在测试中不起作用(locations
)。
使用SpringApplicationBuilder.listeners()
也无法在测试(BucketTestRepositoryTests
)中工作。
在我的案例中没有理由依赖BucketTestRepositoryTests
,所以我选择了@ConfigurationProperties
,如下所示:https://github.com/izeye/spring-boot-throwaway-branches/commit/a1290672dceea98706b1a258f8a17e2628ea01ee
因此,此问题的标题无效,可以删除此问题。
答案 0 :(得分:0)
Follow this thread for more information.
基本上,这个帖子提出了两个选项
第一个选项是将spring.config.name
设置为您要加载的文件列表:
new SpringApplicationBuilder(Application.class)
.properties("spring.config.name=application,mine")
.run(args);
第二个选项是添加侦听器
new SpringApplicationBuilder(SanityCheckApplication.class)
.listeners(new LoadAdditionalProperties())
.run(args);
LoadAdditionalProperties
@Component
public class LoadAdditionalProperties implements ApplicationListener<ApplicationEnvironmentPreparedEvent> {
private ResourceLoader loader = new DefaultResourceLoader();
@Override
public void onApplicationEvent(ApplicationEnvironmentPreparedEvent event) {
try {
Resource resource = loader.getResource("classpath:mine.properties");
PropertySource<?> propertySource = new PropertySourcesLoader().load(resource);
event.getEnvironment().getPropertySources().addLast(propertySource);
} catch (IOException ex) {
throw new IllegalStateException(ex);
}
}
}