2016-05-03 8 views
0

Ich benutze EhCache auf einem Delegaten des Dienstes mit Anmerkungen des Frühlinges.Was soll ich zurückgeben, wenn mein CacheResolver keinen zu verwendenden Cache gefunden hat?

Auf meiner @Cacheable Annotation habe ich ein resolverFactoryName Feld hinzugefügt, um meinen Cache zur Laufzeit aufzulösen.

Dann implementiere ich CacheableCacheResolver Schnittstelle, und einen Cache abhängig von Geschäftsregeln zurückgeben, aber manchmal habe ich keinen Cache nach diesen Regeln zurückzukehren.

Wenn ich null zurückgebe, gab mir EhCache lib eine NPE. Wie kann ich vorgehen, wenn ich keinen Cache zurückgeben kann und die App daher keinen dieser Werte zwischenspeichern sollte? Gibt es einen "falschen" Cache? Gibt es so etwas wie eine NoCacheException zu werfen?

+2

Wie wäre es, einen Cache mit der Kapazität von 0 Einträge zurückzugeben? – cruftex

Antwort

1

Ich glaube nicht, Ausnahme ist der Weg zu gehen, Sie wollen wirklich eine No-Op-Cache-Implementierung.

Von dem Klassennamen geben Sie - CacheableCacheResolver - es sieht aus wie Sie ehcache-spring-annotations verwenden, die keine Unterstützung für was Sie wollen scheinen - ein No-Op-Cache.

Beachten Sie, dass Sie sich immer noch selbst darum kümmern können.

Wenn Sie die Spring Caching-Abstraktion verwenden möchten, können Sie eine similar system verwenden, die No-Op-Caches bis org.springframework.cache.support.NoOpCacheManager.NoOpCache unterstützt.