Jarná vyrovnávacia pamäť - vytvorenie vlastného generátora kľúčov

1. Prehľad

V tomto rýchlom výučbe si ukážeme, ako vytvoriť vlastný generátor kľúčov pomocou Spring Cache.

Úvod do vyššie uvedeného modulu nájdete v tomto článku.

2. KeyGenerator

To je zodpovedné za generovanie každého kľúča pre každú údajovú položku v pamäti cache, ktorý by sa použil na vyhľadanie údajovej položky pri načítaní.

Predvolená implementácia je tu SimpleKeyGenerator - ktorý používa poskytnuté parametre metódy na vygenerovanie kľúča. To znamená, že ak máme dve metódy, ktoré používajú rovnaký názov vyrovnávacej pamäte a množinu typov parametrov, je vysoká pravdepodobnosť, že to povedie ku kolízii.

To tiež znamená, že dáta v pamäti cache môžu byť prepísané inou metódou.

3. Vlastné KeyGenerator

A KeyGeneratormusí implementovať iba jednu jedinú metódu:

Generovanie objektu (Object object, Method method, Object ... params)

Ak nie je implementovaný alebo správne používaný, môže to viesť k prepísaniu údajov vyrovnávacej pamäte.

Pozrime sa na implementáciu:

verejná trieda CustomKeyGenerator implementuje KeyGenerator {public Object generate (Object target, Method method, Object ... params) {return target.getClass (). getSimpleName () + "_" + method.getName () + "_" + StringUtils. arrayToDelimitedString (parametre, "_"); }}

Potom máme dva možné spôsoby jeho použitia; prvou je deklarácia fazule v ApplicationConfig.

Je dôležité poznamenať, že od triedy musí vychádzať CachingConfigurerSupport alebo realizovať CacheConfigurer:

@EnableCaching @Configuration verejná trieda ApplicationConfig rozširuje CachingConfigurerSupport {@Bean public CacheManager cacheManager () {SimpleCacheManager cacheManager = nový SimpleCacheManager (); Cache booksCache = new ConcurrentMapCache ("knihy"); cacheManager.setCaches (Arrays.asList (booksCache)); vrátiť cacheManager; } @Bean ("customKeyGenerator") public KeyGenerator keyGenerator () {return new CustomKeyGenerator (); }}

Druhým spôsobom je použitie iba pre konkrétnu metódu:

@Component public class BookService {@Cacheable (value = "books", keyGenerator = "customKeyGenerator") public List getBooks () {List books = new ArrayList (); books.add (nová kniha („Falšovatelia“, „André Gide“)); books.add (nová kniha („Peer Gynt a Hedda Gabler“, „Henrik Ibsen“)); návratky; }}

4. Záver

V tomto článku sme preskúmali spôsob implementácie vlastných Spring Cache KeyGenerator.

Celý zdrojový kód príkladov je ako vždy k dispozícii na serveri GitHub.


$config[zx-auto] not found$config[zx-overlay] not found