gpt4 book ai didi

java - Spring解析属性文件位置需要解析那些属性

转载 作者:太空宇宙 更新时间:2023-11-04 13:56:20 24 4
gpt4 key购买 nike

我正在使用 Spring 版本 4.0.6.RELEASE,并尝试让 spring 从属性文件中读取并使用已解析的属性之一为另一个属性文件提供位置。我的 spring.xml 文件具有以下内容:

    <bean id="applicationProperties" class="org.springframework.beans.factory.config.PropertiesFactoryBean">
<property name="locations">
<list>
<value>classpath:application.properties</value>
<value>classpath:version.properties</value>
<!- The below file contains the another file location -->
<value>file:${catalina.base}/conf/instance.properties</value>
<value>${another.file.location}</value>

</list>
</property>
<property name="ignoreResourceNotFound" value="true"/>
</bean>

instance.properties 包含:

account.id=BlahBlahBlah
another.file.location=file:/Users/beardman/.myapp/local.properties

和/Users/beardman/.myapp/local.properties 包含:

magic.number=3
database.endpoint=blah

我不断收到以下警告:

WARN  [main] o.s.b.f.c.PropertyPlaceholderConfigurer Could not load properties from ServletContext resource [/${another.file.location}]: Could not open ServletContext resource [/${another.file.location}]

在调试代码时,我可以看到 account.id 已正确注入(inject),但我永远无法显示 magic.number 或 database.endpoint。如何让 spring 使用 instance.properties 文件中解析的属性作为 another.file.location 的值?

编辑:添加属性文件内容

最佳答案

Spring 默认情况下用系统属性替换属性占位符。由于您还想使用外部文件中定义的属性,因此需要创建 PropertyPlaceholderConfigurer
此标记是简写,但如果您需要更多控制,可以将 PropertyPlaceholderConfigurer 定义为 bean。在您的 applicationProperties bean 之前添加此内容

<context:property-placeholder location="file:${catalina.base}/conf/instance.properties"/>

请注意,文件中的属性将覆盖默认模式下的系统属性。您可以通过将属性 systemPropertiesMode="override" 添加到 property-placeholder 元素

来指定首先检查系统属性

关于java - Spring解析属性文件位置需要解析那些属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29778642/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com