J'ai un fichier XML context de printemps avec ce but
Invocation of init method failed; nested exception is net.sf.ehcache.CacheException: Error configuring from input stream. Initial cause was null:149: Could not set attribute "maxElementsInMemory".
4 Réponses :
Ce n'est pas le fonctionnement de l'empereur de propriétéLetLerderConfigurier. Il peut être utilisé pour remplacer les valeurs cacheconfig.xml code> est un fichier externe - il est juste d'être passé à la source du cache d'EH. P>
Si vous utilisez Maven ou ANT, les deux offrent la possibilité de filtrer les jetons dans des fichiers de ressources.
Pour Maven, vous pouvez faire quelque chose comme P>
cache.maxMemoryElements = 200
+1, mais une chose importante à garder à l'esprit ici est qu'avec le remplacement des propriétés de fourmi et maven se produisent pendant Build Time B> par opposition à l'espace réservé à la propriété du printemps où il se produit pendant l'exécution.
Votre exemple utilise Cependant, vous n'avez pas à définir les caches individuels dans le fichier externe, vous pouvez les définir directement dans le fichier de définition de haricot de printemps, en utilisant FALLEYBEAN qui crée un nommé
Ehcache cache instance ... si le
Cache nommée spécifiée n'est pas
configuré dans la configuration du cache
Descripteur, cet usinebean va
construire une instance d'un cache avec
le nom fourni et le spécifié
propriétés de cache et ajoutez-le à la
Cachemanager pour une récupération ultérieure. P>
blockQuote> En d'autres termes, si vous utilisez ehcachemanagerfactorybean code> Pour exposer une référence au
Cachemanager code>, avec des caches définies dans le fichier externe
cacheconfig.xml code> fichier. AS @ CHSSPLY76 SOITIONNÉE, le résolveur de la propriété Spring ne fonctionne que dans les fichiers de définition de beans de Spring.
ehcachefactorybean code>
: p>
ehcachefactorybean code> Pour faire référence à un cache nommé qui n'est pas déjà défini dans
cacheconfig.xml code>, puis le ressort créera et configurez une nouvelle instance de cache et enregistrez-la avec le
Cachemanager CODE> au moment de l'exécution. Cela inclut la spécification de choses comme
maxelementsinmemory code>, et comme cela serait spécifié dans le fichier de définition de haricot de printemps, vous bénéficiez d'une prise en charge complète du résolveur de la propriété: p>
Merci! Cela me fait perdre la bosse que je peux aller au point que je voudrais.
Et si vous voulez configurer quelque chose qui n'est pas un cache? Par exemple, une propriété de CachemanagerpeerListenerFactory?
Pour quiconque a besoin de modifier le chemin DiskStore qui ne peut pas être défini comme l'EHCache Javadoc indique que le paramètre DiskStore est ignoré, vous pouvez créer votre propre implémentation d'un EHCACHEMANAGERFFactoryBean, ce qui vous permet d'injecter le chemin de DiskStore; Vous devez essentiellement intercepter la création du Cachemanager et modifier la configuration passée à l'aide de votre propriété DiskStore, par exemple: la configuration du ressort ressemble alors à ceci: p> <bean id="cacheManager" class="com.yourcompany.package.MyEhCacheManagerFactoryBean" depends-on="placeholderConfig">
<property name="diskStorePath" value="${diskstore.path}"/>
<property name="configLocation" value="classpath:ehcache.xml" />
</bean>
Juste pour ajouter à cela pour moi un message utile: Si vous avez besoin d'accéder à une propriété JNDI, vous pouvez la définir via: