【发布时间】:2021-06-17 01:09:46
【问题描述】:
在我的 Spring Boot 程序中,由于加载时的属性值错误,我遇到了失败。特别是,它使用 DB2 hibernate 方言,但它没有在我认为我使用的属性文件中定义。
假设没有注解,Spring 在哪里寻找属性文件?是的,我知道它通常位于 src/main/resources/application.properties
如果我的测试用例中有一个属性怎么办?它会忽略主要的那个并使用测试中的那个吗?还是从主版本开始,让测试版本覆盖它适用的主版本?
应用程序配置文件会影响使用的属性文件吗?有些人在 main 和 test 中使用相同的 application.properties 文件名。
如果我确实有一个带有类路径位置的 TestSource 注释,它还会在其他地方添加一些东西吗?
最后,我怎样才能让 Spring 告诉我它在哪里寻找属性,而不仅仅是其中一个?
【问题讨论】:
-
文件名不是
application.property,而是application.properties -
使用配置文件的目的是根据环境使用单独的应用程序属性,所以配置文件确实会影响使用的属性文件
-
如果您定义了配置文件,那么它将查找在活动配置文件中引用的属性文件,否则它将查找
application.properties -
@sanjeevRm 我更正了拼写错误。问完这个问题后,我意识到可以在属性文件中指定一个配置文件。
-
spring boot 考虑属性来源的顺序有据可查here。您可以指定默认值并以多种方式覆盖它们。这是一个 maven 约定,您将 application.properties 放在 src/test/resources 下,用于测试,而不是 src/main/resources 中的那个。运行测试时使用哪个属性文件取决于构建工具或 IDE。
标签: java spring-boot spring-properties