java - cargar - ¿Cómo uso un archivo de propiedades opcional en un archivo de configuración de Spring?
cargar archivo properties spring (2)
Estoy usando un archivo de configuración XML que se carga en mi aplicación Java usando ApplicationContext.
El archivo de configuración XML resuelve sus propiedades leyendo varios archivos de propiedades usando PropertyPlaceholderConfigurer.
Quiero hacer que cada archivo de propiedades sea opcional. Pensé que esto se hace configurando ignoreUnresolsvablePlaceholders en true, sin embargo, obtengo la siguiente excepción cuando ejecuto la aplicación (db-default.properties existe pero db.properties no):
Exception in thread "main" org.springframework.beans.factory.BeanInitializationException: Could not load properties; nested exception is java.io.FileNotFoundException: class path resource [db.properties] cannot be opened because it does not exist
Así es como se ve mi configuración XML:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.0.xsd">
<bean id="placeholder-configurer-1" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="order" value="1"/>
<property name="ignoreUnresolvablePlaceholders" value="true"/>
</bean>
<bean id="placeholder-configurer-2" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="order" value="2"/>
<property name="ignoreUnresolvablePlaceholders" value="true"/>
<property name="location" value="classpath:/db-default.properties"/>
</bean>
<bean id="placeholder-configurer-3" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="order" value="3"/>
<property name="ignoreUnresolvablePlaceholders" value="true"/>
<property name="locations">
<list>
<value>classpath:/db.properties</value>
</list>
</property>
</bean>
<bean id="MyDataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
<property name="driverClassName" value="${jdbc.driver}"/>
<property name="url" value="${jdbc.url}"/>
<property name="username" value="${jdbc.username}"/>
<property name="password" value="${jdbc.password}"/>
</bean>
</beans>
¿Qué debo hacer para que db.properties sea un archivo de propiedades opcional?
Esto debería funcionar también:
<context:property-placeholder ignore-resource-not-found="true" location="classpath:your.properties" ... />
<property name="ignoreResourceNotFound" value="true"/>