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 ...
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:
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.
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%