有没有办法在 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.



来源: 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}"

关于java - 我可以在 Spring bean 定义中使用相对路径吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5390405/

10-11 22:25
查看更多