如果yaml文件不是application.yml,则没有正确加载spring boot应用程序上下文

时间:2015-12-03 00:23:31

标签: spring-boot

通过以下配置,我的测试可以正确读取yaml文件中的属性。

@SpringBootApplication
@PropertySource("classpath:application.yml")
@ComponentScan({ "com.my.service" })
public class MyApplication {

}

然后我将yaml文件重命名为my-application.yml,并将PropertySource更改为

@PropertySource("classpath:my-application.yml")

由于null属性值,测试失败。配置类如下:

@Configuration
@ConfigurationProperties(prefix="my")
@Data
public class MyConfig {
    private String attr1;
}

测试类是:

@RunWith(SpringJUnit4ClassRunner.class)
@SpringApplicationConfiguration(classes = MyApplication.class)
public class MyConfigTest {

@Autowired
private MyConfig myConfig;

@Test
public void getMyConfigTest() {
    Assert.assertNotNull(myConfig.getAttr1());
}

为什么spring boot可以找到重命名的yaml文件,但它无法正确加载值?

1 个答案:

答案 0 :(得分:2)

YAML files can’t be loaded via the @PropertySource annotation

它似乎与@PropertySource(" classpath:application.yml")一起使用,因为它是默认位置,无论如何弹簧启动都在那里。

你可以使用@ConfigurationProperties(location =" claspath:my-application.yml")但它并没有真正达到同样的目的(而且我从来没有自己尝试过。)