2011-03-22 70 views
3

有沒有辦法使用相對路徑,相對於類路徑或/ META-INF Spring bean定義文件?這與使用ServletContext獲取此類信息有點不同。我可以在Spring bean定義中使用相對路徑嗎?

例如:我想爲嵌入式數據庫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:」建議,它似乎並沒有在這種情況下工作。

+0

@skaffma:現在用一個例子更新。 – Oliver 2011-03-22 14:00:11

+0

我有同樣的要求。任何想法這個要求? – Trung 2014-01-10 02:41:16

回答

6

以下資源前綴始終是有效的:

表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]但也見Section 4.7.3, 「FileSystemResource caveats」

來源:Spring Reference > 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從不分析JDBC URL,它只是將它傳遞給bean。什麼我建議是使用the PropertyPlaceHolderConfigurer mechanism

<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配置,而不僅僅是DB模式名):

p:url="${dbpath}" 
+0

我已經用一個示例bean更新了這篇文章,我正在嘗試配置。出於某種原因,類路徑不適合我...感謝您的答覆。 – Oliver 2011-03-22 14:01:08

+0

@Oliver感謝您的更新,現在看到我的更新 – 2011-03-22 14:07:58

+0

您的意思是,如果我在諸如'jdbc.url = jdbc:h2:classpath:mydb'的屬性文件中定義jdbc url,Spring會解析它嗎?再一次,在我第一次嘗試中,類路徑似乎沒有被正確替換。 thx – Oliver 2011-03-22 15:18:40

相關問題