Раньше у нас был способ загрузки свойств из файла по пути к классам:
<context:property-placeholder location="classpath:myConfigFile.properties" />
и это сработало отлично. Но теперь мы хотим загрузить свойства из определенного файла в системе, которого нет в пути к классам. Мы хотели иметь возможность динамически загружать файл, поэтому мы используем переменную среды Java для его заполнения. Ниже я приведу простой пример:
В Java:
System.setProperty("my.prop.file", "/path/to/myConfigFile.properties");
В Spring XML:
<context:property-placeholder location="${my.prop.file}" />
Я также пробовал это таким образом, благодаря идее Лучано:
<context:property-placeholder properties-ref="prop" />
<util:properties id="prop" location="reso"/>
<bean id="reso" class="org.springframework.core.io.FileSystemResource">
<constructor-arg index="0" value="${my.prop.file}" />
</bean>
Все, что я пробовал, потерпело неудачу. Независимо от того, что я установил для my.prop.file. Лучшие хиты включают:
<context:property-placeholder location="/path/to/myConfigFile.properties" />
(ClassNotFoundException: .path.to.myConfigFile.properties)
<context:property-placeholder location="file:/path/to/myConfigFile.properties" />
(ClassNotFoundException: file:.path.to.myConfigFile.properties)
<context:property-placeholder location="file:///path/to/myConfigFile.properties" />
(ClassNotFoundException: file:...path.to.myConfigFile.properties)
Как вы используете заполнители свойств с местоположением, которое находится в файловой системе, а НЕ в пути к классам? Мы используем Spring 3.0.5.
Оказывается, возникла проблема со сценарием, запускающим программу Java, которая загружает файл Spring. Спасибо за помощь. Я собираюсь попросить удалить этот вопрос, так как исходный код все-таки работает. Спасибо за помощь.