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.