我正在编写一个小型 UnitTest 以确保我的属性回退机制按预期工作。我的想法是,以编程方式在文件系统的某处创建一个属性文件,然后让 Spring 访问该文件以从此时加载道具。
问题是,即使它存在,spring 也看不到/读取文件(Windows 资源管理器显示并打开文件)
创建的文件:
try {
// Create temp file.
// File file = File.createTempFile("temp", ".properties");
File file = new File("C:/temp/temp.properties");
// den aktuellen Pfad in eine Umgebungsvariable setzen, damit sie von der SpringConfig ausgelesen werden kann.
System.out.println(file.getAbsolutePath());
System.setProperty("tempPropsFilename", file.getAbsolutePath());
// Delete temp file when program exits.
file.deleteOnExit();
弹簧配置
<bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<!-- Die Position der Datei in der Liste ist wichtig. Die letzte überschreibt
die erste (natürlich nur die props, die in beiden enthalten sind) -->
<property name="systemPropertiesModeName" value="SYSTEM_PROPERTIES_MODE_OVERRIDE" />
<property name="ignoreResourceNotFound" value="true" />
<property name="locations">
<array>
<value>${tempPropsFilename}</value>
</array>
</property>
</bean>
来自 Spring 的错误消息
06-07@09:45:48 [main ] INFO ( PropertiesLoaderSupport.java:177) config.PropertyPlaceholderConfigurer - Loading properties file from class path resource [C:/temp/temp.properties]
06-07@09:45:48 [main ] WARN ( PropertiesLoaderSupport.java:200) config.PropertyPlaceholderConfigurer - Could not load properties from class path resource [C:/temp/temp.properties]: class path resource [C:/temp/temp.properties] cannot be opened because it does not exist