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
1
2
3
4
5
6
7
8
9
@Component("myKeyGenerator")public class CustomCacheKeyGenerator implements KeyGenerator {@Overridepublic 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.