当前位置: 首页 > 知识库问答 >
问题:

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

隆功
2023-03-14

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

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

}

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

@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引导可以找到重命名的yaml文件,但它不能正确加载值?

共有1个答案

仲承福
2023-03-14

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

它似乎与@PropertySource(“classpath:application.yml”)一起工作,因为这是默认位置,Spring Boot看起来无论如何都在那里。

您可以使用@ConfigurationProperties(place="claspath:my-application.yml"),但它并没有真正达到相同的目的(我自己也从未尝试过)。

 类似资料:
  • 在我的项目中,我想使用特定于环境的属性文件。例如,如果我在开发中运行它,它应该使用应用程序。dev.properties,对于生产,它应该使用应用程序。产品属性等等。 我有下面两个文件在我的资源文件夹。 application.properties(用于生产) application.dev.properties(用于开发) 我有一个属性像下面的每个文件。 为了刺激 给德夫 我有一门课,如下所示

  • 我正在将webapp中使用的spring框架版本从3.1.4升级到4.1.8。在新的Spring版本中,我们的一些单元测试失败了,因为@AutoWired不再工作。这是失败的测试之一: } 这是math-application-context文件: 我还尝试使用应用程序上下文加载bean,但失败了,出现了以下异常: 如果删除autowired字段,测试将失败,并且通过超类中的应用程序上下文加载的另

  • 我有一个问题,我的应用程序中有两个主题。黑暗主题和光明主题 问题是,如果我将应用主题设置为与系统主题不同,则应用主题无法正确加载。 Light主题继承自: 黑暗主题继承自: e、 g.如果系统主题为浅色,而应用程序主题使用从“主题”继承的深色主题。材料组件。NoActionBar'则主题将无法正确呈现,反之亦然。 我使用的是values night目录,它保存了黑暗主题中使用的所有颜色。

  • 我在我的src/test/resources路径中创建了一个application-integrationtest.yaml,所以我的测试是针对创建的docker TestContainer运行的。问题是没有加载我的application-integrationtest.yaml。 我正在运行一个SpringBoot2.x应用程序 原因:org.springframework.beans.Bean

  • 我发现解决方案是在dispatcher上下文配置中插入“ ”元素。 我觉得这可能是一个糟糕的解决方案,因为我的应用程序上下文配置文件中有类似的“ ”,以便一次性处理所有其他依赖项。 问题是为什么 在应用程序级别没有正确地选择@requestmapping注释?我知道我可以限制组件扫描的基础包在应用程序级别的某些包,但我的意图是只使用一个组件扫描在应用程序级别,仅此而已。我真的必须使用两个不同的组件

  • 我从S3下载一个文件,如下所示: 就目前而言,它总是有效的。但是,我想添加一些错误处理。如果下载失败,我如何检查或获取错误消息。我怎么知道出了什么事? boto3是否提供任何错误处理功能? 我读到:检查S3下载是否成功完成,但我正在寻找替代方案。