2016-07-05 14 views
0

Ich verwende Ehcache-Implementierung von JCache.wie andere Methoden aus der gleichen Klasse zwischenspeichern?

Lets sagen, ich habe Klasse Test. In dieser Klasse habe ich zwei Methoden: methodA und methodB. methodB hat Annotation @CacheResult(cacheName = "methodB").

Aus diesen Informationen würden Sie erraten, dass ich die Cache-Methode methodB und methodA zwischengespeichert haben sollte diesen Cache verwenden.

Aber ... Es funktioniert nicht. Wenn ich Methoden aus derselben Klasse verwende, scheint es, als würde diese Anmerkung ihren Interceptor nicht auslösen. Es funktioniert jedoch, wenn ich die Klasse Test2 erstellen und die Methode methodB in diese Klasse verschieben - dann wird das Ergebnis dieser Methode erwartungsgemäß zwischengespeichert.

Wie kann ich Caching-Methoden aus derselben Klasse aktivieren?

Antwort

1

Jetzt scheint es unmöglich - wenn wir auf CacheResult Annotationen bleiben.

Dies liegt daran, Interceptors nicht korrekt ausgelöst werden, wenn die Klasse verwendet ihre Methoden von this Referenz - und nicht von CDI. Wenn wir sie zwischenspeichern wollen, müssen wir einen anderen Weg benutzen oder einfach eine statische Methode aufrufen, sagen wir cacheMe, innerhalb jeder private Methode.

Verwandte Themen