2012-07-06 2 views

Répondre

3

Vous pouvez mettre quelque chose comme ceci - <terracottaConfig url="${terracotta.config.location}" />, mais le gros problème est que ce sera chargé seulement from the system properties. Il n'est pas résolu à partir de PropertyPlaceHolder car ce n'est pas un fichier de configuration Spring. Par conséquent, si vous voulez utiliser un fichier de configuration externe, vous devrez définir par programme cette propriété système avant que l'application Spring ne commence à charger le fichier ehcache.xml - une façon de le faire sera d'écrire votre code personnalisé ServletContextListener charger votre fichier de propriétés et définir la propriété du système en fonction de cela, de cette façon, lorsque le fichier ehcache.xml est chargé, il serait en mesure de résoudre correctement le placeholder.


Votre réponse m'a aidé à résoudre mon problème. Je veux juste ajouter qu'au lieu de mettre la propriété du système à travers le programme, j'utilise util: propriétés comme suit

<bean id="sysProperties" class="org.springframework.beans.factory.config.MethodInvokingFactoryBean"> 
     <property name="targetObject" value="#{@systemProperties}"/> 
     <property name="targetMethod" value="putAll"/> 
     <property name="arguments"> 
      <util:properties> 
       <prop key="propertyname_used_in_ecache_xml">#{proerties_defined_using_property_factory['propertyname_defined_in_external_properties_file']}</prop> 
      </util:properties> 
     </property> 
    </bean> 

    <bean id="cacheManager" 
     class="org.springframework.cache.ehcache.EhCacheManagerFactoryBean" depends-on="sysProperties"> 
     <property name="configLocation"> 
      <value>classpath:ehcache.xml</value> 
     </property> 
    </bean> 
+0

Cela pourrait fonctionner, mais mon exigence est telle que je veux charger la valeur de « terracotta.config. emplacement 'du fichier de propriétés externe. Pouvons-nous y parvenir en étendant certaines classes dites 'EhCacheFactoryBean'. – JProgrammer

Questions connexes