Ho un application-context.xml di primavera con PropertyPlaceholderConfigurer per ottenere i valori delle proprietà dal file .properties. Le cartelle di origine principale e di test hanno un file .properties separato. Il problema è che ho bisogno di usare le variabili d'ambiente nel file .properties. Ma quando lo faccio nel modo seguente:PropertyPlaceholderConfigurer e variabili di ambiente nei file .properties
property.name=${env.SYSTEM_PROPERTY}
sto ottenendo il seguente errore:
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'
mentre segnaposto configuratore definito come
<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="location" value="classpath:com/example/application.properties"/>
</bean>
Tutte le idee come-fare property.name deve essere interpretato come variabile di ambiente (e non come segnaposto)?
Cordiali saluti, Dmitriy.
Questo è abbastanza buono. Tuttavia, un problema è che dimenticando di definire una variabile di runtime produce errori di runtime complessi, come il file config_xxx non trovato e i mi piace. Per migliorare questa situazione, registro un bean che implementa speciali interfacce di primavera come questa: class EnvironmentReporter implementa PriorityOrdered, BeanFactoryPostProcessor, EnvironmentAware {...} environment.getProperty mi consente di verificare le proprietà previste e di fallire in modo pulito prima che venga raggiunto qualsiasi altro bean creato. – Federico