Spring Cache - Stvaranje prilagođenog generatora ključeva

1. Pregled

U ovom brzom vodiču ilustrirat ćemo kako stvoriti prilagođeni generator ključeva pomoću Spring Cachea.

Uvod u gornji modul potražite u ovom članku.

2. KeyGenerator

Ovo je odgovorno za generiranje svakog ključa za svaku podatkovnu stavku u predmemoriji, koja bi se koristila za traženje podatkovne stavke prilikom dohvaćanja.

Zadana je implementacija ovdje SimpleKeyGenerator - koji koristi generirane parametre metode za generiranje ključa. To znači da ako imamo dvije metode koje koriste isto ime predmemorije i skup tipova parametara, tada postoji velika vjerojatnost da će rezultirati sudarom.

To također podrazumijeva da se podaci predmemorije mogu prebrisati drugom metodom.

3. Prilagođeno KeyGenerator

A KeyGeneratortreba implementirati samo jednu jedinu metodu:

Generiranje objekta (Objektni objekt, Metodska metoda, Parametri objekta ...

Ako se ne implementira ili ne koristi pravilno, može dovesti do prepisivanja podataka predmemorije.

Pogledajmo implementaciju:

javna klasa CustomKeyGenerator implementira KeyGenerator {generiranje javnog objekta (cilj objekta, metoda metode, objekt ... parametri) {return target.getClass (). getSimpleName () + "_" + method.getName () + "_" + StringUtils. arrayToDelimitedString (params, "_"); }}

Nakon toga imamo dva moguća načina korištenja; prvo je proglašavanje graha u ApplicationConfig.

Važno je napomenuti da se nastava mora protezati od CachingConfigurerSupport ili provesti CacheConfigurer:

@EnableCaching @Configuration javna klasa ApplicationConfig proširuje CachingConfigurerSupport {@Bean public CacheManager cacheManager () {SimpleCacheManager cacheManager = new SimpleCacheManager (); Cache booksCache = novi ConcurrentMapCache ("knjige"); cacheManager.setCaches (Arrays.asList (booksCache)); vratiti cacheManager; } @Bean ("customKeyGenerator") javni KeyGenerator keyGenerator () {vratiti novi CustomKeyGenerator (); }}

Drugi način je upotreba samo za određenu metodu:

@Component javni razred BookService {@Cacheable (value = "books", keyGenerator = "customKeyGenerator") javni popis getBooks () {Popis knjiga = novi ArrayList (); books.add (nova knjiga ("Krivotvoritelji", "André Gide")); books.add (nova knjiga ("Peer Gynt i Hedda Gabler", "Henrik Ibsen")); vratiti knjige; }}

4. Zaključak

U ovom smo članku istražili način implementacije prilagođenih proljetnih predmemorija KeyGenerator.

Kao i uvijek, puni izvorni kod primjera dostupan je na GitHub-u.


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