作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在为 Spring Boot 应用程序编写测试,但在特定于配置文件的应用程序属性文件中进行占位符替换时,我遇到了奇怪的行为。
因此,在我的 settings.xml 中,我的数据库信用设置如下
...
<profiles>
<profile>
<properties>
<db.user>MyLogin</db.user>
<db.password>MyPassword</db.password>
<db.url>my_db_connection_url</db.url>
</properties>
</profile>
</profiles>
...
因此settings.xml 中只有一个配置文件。在应用程序中,我有一个特定于配置文件的应用程序属性文件,如下所示:
application-myprofile.properties
:
spring.datasource.url=@db.url@
spring.datasource.username=@db.user@
spring.datasource.password=@db.password@
当我使用特定的配置文件 myprofile
启动 Spring Boot 应用程序时 - 一切正常,正在从 settings.xml 中提取凭据。
但是,对于测试,我的设置略有不同。
我有一个这样的测试类:
@SpringBootTest
@ActiveProfiles("mytestprofile")
public class MyTest {
....
}
以及 test/resources
内相应的测试配置文件属性文件
application-mytestprofile.properties
spring.datasource.url=@db.url@
spring.datasource.username=@db.user@
spring.datasource.password=@db.password@
在这种情况下,占位符不会被 settings.xml
中的值替换。但是,如果我将 application-mytestprofile.properties
的内容替换为
spring.datasource.url=my_db_connection_url
spring.datasource.username=MyLogin
spring.datasource.password=MyPassword
它工作得很好。另外,如果我将占位符放在 application.properties
中:
spring.datasource.url=@db.url@
spring.datasource.username=@db.user@
spring.datasource.password=@db.password@
它也有效。
问题是:这是为什么?如何使特定于配置文件的应用程序属性文件与测试中的 settings.xml
一起使用?
最佳答案
我没有有关您的项目设置的所有详细信息,但看起来您有一个如下所示的测试文件夹结构:
test
-> java
-> resources
虽然我认为应该是
test
-> java
-> resources
因此,将您的测试资源文件夹向上移动一级,它应该可以工作。
关于java - 替换 spring 配置文件特定属性文件中的属性占位符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62007287/
我是一名优秀的程序员,十分优秀!