0 Tage Serie
java / expert
Snippet

Fein abgestufte Cache-Schlüssel mit einem benutzerdefinierten KeyGenerator

Standard-Caching in Spring verwendet einen SimpleKeyGenerator, was in komplexen Umgebungen zu Kollisionen führen kann. Die Implementierung eines benutzerdefinierten KeyGenerators bietet volle Kontrolle darüber, wie Schlüssel gehasht werden, und ermöglicht es, Klassen-Metadaten oder spezifische Parameterattribute einzubeziehen.

snippet.java
java
1
2
3
4
5
6
7
8
9
@Component("myKeyGenerator")
public class CustomCacheKeyGenerator implements KeyGenerator {
@Override
public Object generate(Object target, Method method, Object... params) {
return target.getClass().getSimpleName() + "_"
+ method.getName() + "_"
+ Arrays.deepHashCode(params);
}
}
spring
Erklärung
1
public Object generate(Object target, Method method, Object... params)
Benutzerdefinierte Logik zur Ableitung eines eindeutigen Identifikators für eine spezifische Methodenausführung.
2
Arrays.deepHashCode(params)
Erzeugt einen stabilen Hash-Code basierend auf dem tiefen Inhalt der Methodenargumente.