Spring Kontext Property-Plocholder ehcahe Konfiguration

7

Ich habe eine Spring Context XML-Datei mit diesem

%Vor%

Das Ziel ist, dem Kunden zu erlauben, die Eigenschaftendatei zu bearbeiten, wie dies

%Vor%

und dann in der tatsächlichen cacheConfig.xml Datei haben diese

%Vor%

, damit Artikel, die der Kunde nicht ändern soll, nicht angezeigt werden. Natürlich sind die oben genannten Details nur teilweise detailliert und funktionieren NICHT. Momentan sehe ich das in der Log-Datei

%Vor%

Vielen Dank im Voraus ...

    
Dennis S 07.10.2009, 18:37
quelle

4 Antworten

12

In Ihrem Beispiel wird EhCacheManagerFactoryBean verwendet, um einen Verweis auf CacheManager bereitzustellen, wobei die Caches in der externen Datei cacheConfig.xml definiert sind. Wie @ ChssPly76 darauf hingewiesen hat, funktioniert Spring's Property Resolver nur innerhalb der eigenen Bean-Definitionsdateien von Spring.

Sie müssen die einzelnen Caches in der externen Datei jedoch nicht definieren. Sie können sie direkt in der Spring-Bean-Definitionsdatei definieren, indem Sie EhCacheFactoryBean :

  

FactoryBean, die einen Namen erstellt   EHCache Cache-Instanz ... Wenn die   spezifizierter benannter Cache ist nicht   konfiguriert in der Cache-Konfiguration   Descriptor, wird diese FactoryBean   Konstruiere eine Instanz eines Cache mit   Der angegebene Name und die angegebene   Cache-Eigenschaften und fügen Sie sie dem hinzu   CacheManager für späteren Abruf.

Mit anderen Worten: Wenn Sie EhCacheFactoryBean verwenden, um auf einen benannten Cache zu verweisen, der nicht bereits in cacheConfig.xml definiert ist, erstellt Spring eine neue Cache-Instanz und konfiguriert sie, und registriert sie zur Laufzeit mit CacheManager . Dazu gehört die Angabe von maxElementsInMemory , und da dies in der Spring-Bean-Definitionsdatei angegeben wird, erhalten Sie die vollständige Unterstützung des Property-Resolvers:

%Vor%     
skaffman 07.10.2009, 22:37
quelle
3

So funktioniert PropertyPlaceholderConfigurer nicht. Es kann verwendet werden, um Werte im Kontext zu ersetzen, aber nicht innerhalb beliebiger externer Dateien. Und cacheConfig.xml ist eine externe Datei - sie wird nur von Spring an EH Cache übergeben.

    
ChssPly76 07.10.2009 18:45
quelle
2

Wenn Sie Maven oder Ant verwenden, bieten beide die Möglichkeit, Tokens in Ressourcendateien zu filtern.

Für Maven könnten Sie etwas wie

tun %Vor%

Und in einer Filterdatei oder in der POM selbst,

%Vor%

Ressourcenfilterung in Maven: The Definitive Guide

Mit Ant machen Sie das mit FilterSets und der <copy> Aufgabe.

    
matt b 07.10.2009 19:13
quelle
2

Für jeden, der den diskstore-Pfad ändern muss, der nicht als ehcache gesetzt werden kann, gibt javadoc an, dass der diskstore-Parameter ignoriert wird, können Sie eine eigene Implementierung von EhCacheManagerFactoryBean erstellen, mit der Sie den diskstore-Pfad injizieren können; Sie müssen im Grunde die Erstellung des CacheManagers abfangen und die Konfiguration ändern, die mit Ihrer diskstore -Eigenschaft übergeben wird, z. B .:

%Vor%

Die Spring-Konfiguration sieht dann so aus:

%Vor%     
Seb 19.05.2011 14:15
quelle

Tags und Links