modifier un propertiesPlaceHolder a la volée..
salut a tous;
je bosse sur une application java utilisant Spring.
J'ai un bean du type :
Code:
1 2 3 4 5 6 7 8 9 10
|
<bean id="propertyConfigurer"
class="org.jasypt.spring.properties.EncryptablePropertyPlaceholderConfigurer">
<constructor-arg ref="configurationEncryptor" />
<property name="locations">
<list>
<value>application.properties</value>
</list>
</property>
</bean> |
qui charge automatiquement les valeurs des données placée dans application.properties dans les beans ayant ce données comme propriété. Ex:
Code:
1 2 3 4 5 6 7 8 9 10 11
|
<bean id="configController"
class="fr.test.controllers.ConfigController">
<description>
bean qui récupère et vérifie le renseignements des paramètres obligatoires.
</description>
<property name="urls" value="${ldap.urls}"/>
<property name="ldapFilters" value="${ldap.filters}"/>
<property name="xmlpath" value="${xml.creationPath}"/>
<property name="xmlMapping" value="${xml.mapping}"/>
</bean> |
et dans le application.properties je renseigne par exemple:
Code:
1 2
|
ldap.urls=ldap://ldap1.mon-ldap.fr:392 |
Tout cela fonctionne. Cependant j'aimerai que les utilisateurs puissent si ils le désirent placer un autre fichier properties (voir plusieurs pour lancer autant de fois le traitement) en parametre du programme.
J'aimerais donc pouvoir faire:
Code:
1 2 3 4 5 6 7 8 9 10
|
//récupération des beans:
ApplicationContext ctx = new ClassPathXmlApplicationContext("springbeans.xml");
if(args.length>0){
EncryptablePropertyPlaceholderConfigurer eppc = (EncryptablePropertyPlaceholderConfigurer)ctx.getBean("propertyConfigurer");
String fic_prop=args[0];
eppc.setLocation(new FileSystemResource(fic_prop));
} |
Le probleme est que les proprietes sont chargées lors de :
Code:
1 2
|
new ClassPathXmlApplicationContext("springbeans.xml"); |
le changement que je fais apres n'est pas pris en compte.
Y'a -t-il un moyen de recharger tous les beans utilisant les properties une fois le changement de fichier effectuer; un truc du genre : eppc.reloadAll();
Merci d'avance pour votre aide :hola: