はい、代替手段があります。を使用すると、呼び出されKeyGenerator
たものにアクセスMethod
できるため、独自の種類のコンポジットを作成し、それに応じてリダイレクトできます。これを行う擬似コードは次のとおりです。
@MyKeyGenerator("myKeyGenerator1")
@Cacheable(cacheNames="cacheName1")
Foo method1(...) { ... }
@MyKeyGenerator("myKeyGenerator2")
@Cacheable(cacheNames="cacheName2")
Bar method2(...) { ... }
MyKeyGenerator
あなたの注釈です。keyGenerator
次に、次のようなシングルを作成できます。
public class MyKeyGenerator extends DefaultKeyGenerator {
@Override
public Object generate(Object target, Method method,
Object... params) {
MyKeyGenerator myKeyGenerator =
method.getAnnotation(MyKeyGenerator.class);
if (myKeyGenerator != null) {
// read your annotation and invoke the proper
// key generator according to the value
} else {
super.generate(target, method, params);
}
}
}
デフォルトの代わりに使用CachingConfigurer
して指定できます。MyKeyGenerator
注: いずれにせよ、Spring Framework 4 への更新はおそらく適切であり、他の多くの優れた機能を利用できます。ただ言って。