[英]Can I use relative path in Spring bean definition?
有沒有辦法在Spring bean定義文件中使用相對路徑,比如相對於類路徑或/ META-INF? 這與使用ServletContext
獲取此類信息略有不同。
例如:我正在嘗試為嵌入式數據庫H2定義文件名。
<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="" />
~/mydb
不是那么需要,因為它取決於你部署應用程序的方式和位置,主目錄可能不在那里......我怎樣才能讓它寫入,例如, /WEB-INF/dbstore/
?
順便說一句 - 我按照建議嘗試了“classpath:”,它在這種情況下似乎不起作用。
以下資源前綴始終有效:
表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告誡” 。
來源: Spring Reference> 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從不分析JDBC URL,它只是將它傳遞給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" />
現在,您可以在類路徑或每個系統屬性的屬性文件中配置路徑。 實際上,您可能希望執行以下操作(使整個URL可配置,而不僅僅是數據庫模式名稱):
p:url="${dbpath}"
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.