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.