Tengo un Spring application-context.xml con PropertyPlaceholderConfigurer para obtener los valores de las propiedades del archivo .properties. Las carpetas de origen principal y de prueba tienen un archivo .properties por separado. El problema es que necesito usar variables de entorno en el archivo .properties. Pero cuando lo hago de la siguiente manera:PropertyPlaceholderConfigurer y variables de entorno en archivos .properties
property.name=${env.SYSTEM_PROPERTY}
Estoy recibiendo el siguiente error:
org.springframework.beans.factory.BeanDefinitionStoreException: Invalid bean definition with name 'beanName' defined in class path resource [com/example/applicationContext.xml]: Could not resolve placeholder 'env.SYSTEM_PROPERTY'
mientras configurador marcador de posición define como
<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="location" value="classpath:com/example/application.properties"/>
</bean>
Alguna idea de cómo-hacer property.name se interpreta como variable de entorno (y no como marcador de posición)?
Recuerdos, Dmitriy.
Esto es bastante buena. Sin embargo, un problema es que olvidando definir una variable de tiempo de ejecución produce errores de tiempo de ejecución difíciles, como el archivo config_xxx no encontrado y los "me gusta". Para mejorar esa situación, registro un bean que implementa interfaces especiales de primavera como esta: class EnvironmentReporter implementa PriorityOrdered, BeanFactoryPostProcessor, EnvironmentAware {...} environment.getProperty me permite comprobar las propiedades esperadas y falla limpiamente antes de que se obtenga cualquier otro bean creado. – Federico