Necesito tener una configuración de desarrollo y producción para nuestro proyecto de primavera. Entiendo que puede usar perfiles para la primavera, pero eso no es algo que podamos hacer.Spring loading application.properties basado en la definición de contexto de servlet de tomcat
Lo que quiero hacer es colocar en el entorno de desarrollo un archivo test-application.properties y en producción un archivo prod-application.properties. En la definición de contexto tomcat enviamos lo siguiente:
<Context>
<context-param>
<param-name>properties_location</param-name>
<param-value>file:C:\Users\Bill\test-application.properties</param-value>
</context-param>
</Context>
Y podemos cambiar el valor de los servidores de producción. En la configuración de la primavera tenemos algo como esto:
<bean class="org.springframework.context.support.PropertySourcesPlaceholderConfigurer">
<property name="locations">
<list>
<value>${properties_location}</value>
</list>
</property>
<property name="ignoreUnresolvablePlaceholders" value="false" />
</bean>
Pero seguimos teniendo errores como:
org.springframework.beans.factory.BeanInitializationException: Podría no cargar propiedades; la excepción jerarquizada es java.io.FileNotFoundException: No se pudo abrir recurso ServletContext [/ $ {} properties_location]
Cualquier ideas sobre cómo resolver?
Hice lo mismo pero olvidé ignorarResourceNotFound. Ahora trabaja. ¡Gracias por la respuesta! – checklist
Además, como indica SYSTEM_PROPERTIES_MODE_OVERRIDE, cualquier propiedad especificada con una -D en la llamada java anulará lo que se encuentre en el archivo de propiedades, por lo que 'java -Duser.name = ted ...' tendrá prioridad. Con ignoreResourceNotFound, los archivos de propiedades también pueden estar ausentes sin lanzar una excepción. –