如果 yaml 文件不是 application.yml ,则未正确加载 Spring 启动应用程序上下文



通过以下配置,我的测试可以正确地从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文件,但不能正确加载值?

YAML文件无法通过@PropertySource注释加载

它似乎可以与@PropertySource("classpath:application.yml")一起使用,因为这是默认位置,而spring-boot则会在那里进行查找。

您可以使用@ConfigurationProperties(location="clapath:myApplication.yml"),但它并没有真正达到同样的目的(我自己也从未尝试过)。

最新更新