2

我面临弹簧占位符配置的问题。我已经在网上搜索试图找到解决方案,但对我来说根本没有任何效果。

我们曾经使用 spring 配置器来加载我们的 .properties 文件,并且由于配置文件位于 META-INF 目录中,因此一切正常。

现在我们需要将配置文件放在 /etc/sep/properties 目录或其他文件系统目录中。

我试着用

<context:property-placeholder location="file:/etc/sep/properties/jdbc.properties" />
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
        <property name="driverClassName" value="${jdbc.driverClassName}" />
        <property name="url" value="${jdbc.databaseurl}" />
        <property name="username" value="${jdbc.username}" />
        <property name="password" value="${jdbc.password}" />
        <property name="initialSize" value="${jdbc.initialPoolSize}" />
    </bean>

/etc/sep/properties/jdbc.properties 的内容如下:

cat /etc/sep/properties/jdbc.properties 
jdbc.driverClassName= org.postgresql.Driver
jdbc.dialect=org.hibernate.dialect.PostgreSQLDialect
jdbc.databaseurl=jdbc:postgresql://localhost:5432/sep?characterEncoding=utf8&autoReconnect=true
jdbc.username=****
jdbc.password=****

我也尝试使用另一种方法,但它对我也不起作用。

<context:property-placeholder properties-ref="prop" />

<util:properties id="prop" location="reso"/>

<bean id="reso" class="org.springframework.core.io.FileSystemResource">
    <constructor-arg index="0" value="/etc/sep/properties/jdbc.properties" />
</bean>

我不知道这是否重要,但我们正在使用 maven 构建,因此 application-context.xml 被放置在 core-lib.jar 中,它在我们的 web-app 中用作依赖项。其他配置,例如日志记录工作得很好。

我将不胜感激任何建议。

4

2 回答 2

1

这只是一个想法,但它可能会奏效,

您是否检查过该.property文件是否具有正确的访问权限?我的意思是,运行您的 Spring 应用程序的用户是否可以访问它?

如果您显示显示的错误,这将有很大帮助。

于 2014-12-19T11:42:50.210 回答
0

好的,我终于解决了。关于它有两件事。

起初:我的 tomcat 服务器没有正确更新部署的文件。

最后我不太确定它是否有帮助,但我们在 file: 规范之后又添加了一个斜杠,因此结果是:

<context:property-placeholder location="file:///etc/sep/properties/*.properties" />

现在它正在正确加载所有配置文件。

于 2014-12-19T12:09:33.823 回答