gpt4 book ai didi

java - 从 spring 加载多个外部属性文件

转载 作者:行者123 更新时间:2023-11-30 07:33:07 24 4
gpt4 key购买 nike

我想使用 Spring 从外部文件夹加载所有属性文件。我成功加载了一个文件,但向其中添加通配符似乎不起作用。

这有效(加载test.properties):

<bean id="propertiesLocation"
class="org.springframework.web.context.support.ServletContextParameterFactoryBean">
<property name="initParamName"><value>file://EXTERNAL_DIRECTORY/test.properties</value></property>
</bean>

<bean id="propertyConfigurer"
class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="location" ref="propertiesLocation"></property>
<property name="ignoreUnresolvablePlaceholders" value="true" />
<property name="order" value="0"/>
</bean>

这不会(加载*.properties):

<bean id="propertiesLocation"
class="org.springframework.web.context.support.ServletContextParameterFactoryBean">
<property name="initParamName"><value>file://EXTERNAL_DIRECTORY/*.properties</value></property>
</bean>

<bean id="propertyConfigurer"
class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="location" ref="propertiesLocation"></property>
<property name="ignoreUnresolvablePlaceholders" value="true" />
<property name="order" value="0"/>
</bean>

错误:

Caused by: java.io.FileNotFoundException: /EXTERNAL_DIRECTORY/*.properties (No es un directorio)

如何让 Spring 加载文件夹中的所有外部属性文件?

编辑:我使用第一个 bean (ServletContextParameterFactoryBean),因为在项目中我从 web.xml 文件中检索路径。我忘记了这一点,只是将路径粘贴到了 bean 中,这是不正确的,但与问题无关。

最佳答案

尝试使用以下内容:

<bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="locations" value="file://EXTERNAL_DIRECTORY/*.properties"/>
<property name="ignoreUnresolvablePlaceholders" value="true" />
<property name="order" value="0"/>
</bean>

如果您需要包含更多资源,您可以执行以下操作:

<bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="locations" >
<list>
<value>classpath:single.properties"</value>
<value>file://EXTERNAL_DIRECTORY/*.properties"</value>
<value>file://ANOTHER_EXTERNAL_DIRECTORY/*.properties"</value>
</list>
</property>
<property name="ignoreUnresolvablePlaceholders" value="true" />
<property name="order" value="0"/>
</bean>

使用PropertyEditor的默认实现,Spring会将字符串转换为Resource。您可以找到details in documentation .

希望这会有所帮助。

关于java - 从 spring 加载多个外部属性文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35795561/

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