Java 使用相对于配置文件的路径引用Spring属性文件
我正在将Spring配置文件中的属性移动到一个单独的属性文件中。这包含在配置文件中,并带有Java 使用相对于配置文件的路径引用Spring属性文件,java,spring,properties,Java,Spring,Properties,我正在将Spring配置文件中的属性移动到一个单独的属性文件中。这包含在配置文件中,并带有 <bean class="org.springframework.beans.factory.config.PropertyPlaceHolderConfigurer"> <property name="location" value="file:properties/${CONFIG_MODE}/service.properties" /> </bean>
<bean class="org.springframework.beans.factory.config.PropertyPlaceHolderConfigurer">
<property name="location" value="file:properties/${CONFIG_MODE}/service.properties" />
</bean>
目前,属性文件的位置相对于服务器进程的当前工作目录
这就要求流程必须从特定的工作目录启动,更糟糕的是,它可能会获取一个完全不同的属性文件(当然是远程的),例如,如果它是在工作目录设置为服务的旧版本的情况下启动的
我想使用相对于包含配置文件的目录的路径引用属性文件
现在看来,这可能是我需要的,但我不知道如何在配置文件中使用它
谢谢
史蒂夫我不知道怎么做 但是,您可以从类路径加载属性文件:
<bean class="org.springframework.beans.factory.config.PropertyPlaceHolderConfigurer">
<property name="location" value="classpath:path/to/service.properties" />
</bean>
属性文件的类路径位置是一种更容易预测的情况,只要类路径设置正确,它就可以工作。使用3.1,如果需要,可以将文件保留在类路径之外 使用以下bean定义
<bean class=
"org.springframework.beans.factory.config.PropertyPlaceHolderConfigurer">
<property name="location"
value="file:${props.path}/service.properties" />
</bean>
假设您已将config.properties文件放在WEB-INF中 然后:
类路径:../config.properties
很好的解决方案-谢谢。唯一的问题(我承认这根本不是一个严重的问题)是,有时能够直接查看/编辑属性文件很有用——例如在紧急情况下,或者进行一些快速测试。将它放在jar中并不能防止这种情况发生,但会让它变得有点麻烦。@stevec:它不必放在jar、文件中,它也可以放在类路径上的文件系统目录中。一旦我使用
@Value(${thing.inside.service.properties}”)
,这会起作用吗?谢谢。它对我有用+1
java ... -Dprops.path=path/to/where/it/is
<bean id="propertyConfigurerInternal"
class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="location">
<value>classpath:../config.properties</value>
</property>