我正在使用Spring Boot开发应用程序。我在文件系统上有一个外化属性文件。它的位置存储在一个环境变量中,如下所示 -
export props = file://Path-to-file-on-filesystem/file.properties
此文件中的属性将加载到类路径中,并可供以下应用程序使用 -
List<String> argList = new ArrayList<>();
String properties = System.getenv().get("props");
try (InputStream is = BinaryFileReaderImpl.getInstance().getResourceAsStream(properties)) {
if (is != null) {
Properties props = new Properties();
props.load(is);
for(String prop : props.stringPropertyNames()) {
argList.add("--" + prop + "=" + props.getProperty(prop));
}
}
} catch(Exception e) {
//exception handling
}
这个argList在下面开始时传递给SpringBootApplication
-
SpringApplication.run(MainApplication.class, argList);
我可以使用${prop.name}
但是,当我运行JUnit Integration Tests时,我无法访问这些属性。我的所有数据库属性都在此外部化属性文件中。我不想将此文件保留在应用程序的任何位置,例如。的的src /主/资源
有没有办法在spring的测试环境中加载这些属性?
答案 0 :(得分:0)
我终于可以在linux机器上使用@PropertySource
读取外部化的属性文件。但是无法让它在Windows实例上运行。
完成的更改如下 -
export props=/path-to-file
请注意,file://
和实际文件名已从环境变量中删除。
@Configuration
@PropertySource({"file:${props}/file-test.properties", "classpath:some_other_file.properties"})
public class TestConfiguration {
}
将此配置类保留在各个项目中&#39; src / test / java文件夹。感谢您Joe Chiavaroli上面的评论。