Следующие префиксы ресурсов всегда действительны:
Таблица 4.1. Ресурсные строки
Prefix Example Explanation
---------------------------------------------------------------------------
classpath: | classpath:com/myapp/config.xml | Loaded from the classpath.
file: | file:/data/config.xml | Loaded as a URL, from the
| | filesystem. [1]
http: | http://myserver/logo.png | Loaded as a URL.
(none) | /data/config.xml | Depends on the underlying
| | ApplicationContext.
[1] Но см. Также Раздел 4.7.3,
«Предупреждение о FileSystemResource» .
Источник: Ссылка на пружину> The ResourceLoader
Но я действительно не вижу, как относительные пути там вписываются. Возможно, вам следует разработать ваши требования.
Спасибо за дополнительную информацию. Вы правы, это не может работать в этом контексте
<bean id="myDataSource"
class="org.springframework.jdbc.datasource.DriverManagerDataSource"
p:driverClassName="org.h2.Driver"
p:url="jdbc:h2:~/mydb;AUTO_SERVER=TRUE"
p:username=""
p:password="" />
Spring никогда не анализирует этот URL JDBC, он просто передает его в bean-компонент. Я бы предложил использовать механизм PropertyPlaceHolderConfigurer
:
<bean id="myDataSource"
class="org.springframework.jdbc.datasource.DriverManagerDataSource"
p:driverClassName="org.h2.Driver"
p:url="jdbc:h2:${dbpath};AUTO_SERVER=TRUE"
p:username=""
p:password="" />
<!-- example config -->
<context:property-placeholder location="classpath:com/foo/jdbc.properties"
systemPropertiesMode="override" />
Теперь вы можете настроить путь в файле свойств на classpath или на системное свойство. На самом деле, вы, вероятно, хотите сделать что-то подобное (сделать настраиваемым весь URL, а не только имя схемы БД):
p:url="${dbpath}"