簡體   English   中英

我可以在Spring bean定義中使用相對路徑嗎?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM