Tavaszi gyorsítótár - Egyéni KeyGenerator létrehozása
1. Áttekintés
Ebben a gyors bemutatóban bemutatjuk, hogyan hozhat létre egyéni kulcsgenerátort a Spring Cache segítségével.
A fenti modul bemutatásához olvassa el ezt a cikket.
2. KeyGenerator
Ez felelős a gyorsítótárban lévő minden egyes adat minden kulcsának előállításáért, amelyet az adat visszakereséskor történő megkeresésére használnak.
Az alapértelmezett megvalósítás itt a SimpleKeyGenerator - amely a megadott módszerparamétereket használja egy kulcs előállításához. Ez azt jelenti, hogy ha két módszerünk van, amelyek ugyanazt a gyorsítótár nevet és a paramétertípusokat használják, akkor nagy a valószínűsége, hogy ütközést eredményez.
Ez azt is jelenti, hogy a gyorsítótár adatait más módszerrel felül lehet írni.
3. Egyedi KeyGenerator
A KeyGeneratorcsak egyetlen módszert kell végrehajtania:
Objektumgenerálás (Object Object, Method method, Object ... paraméterek)
Ha nem valósítják meg vagy nem használják megfelelően, a gyorsítótár adatainak felülírásához vezethet.
Nézzük meg a megvalósítást:
public class A CustomKeyGenerator végrehajtja a KeyGenerator {nyilvános objektumgenerálást (Object target, Method method, Object ... params) {return target.getClass (). getSimpleName () + "_" + method.getName () + "_" + StringUtils. arrayToDelimitedString (params, "_"); }}
Ezt követően két lehetséges módunk van felhasználni; az első babot hirdet a ApplicationConfig.
Fontos megjegyezni, hogy az osztálynak ki kell terjednie CachingConfigurerSupport vagy megvalósítani CacheConfigurer:
@EnableCaching @Configuration nyilvános osztály Az ApplicationConfig kiterjeszti a CachingConfigurerSupport {@Bean public CacheManager cacheManager () {SimpleCacheManager cacheManager = new SimpleCacheManager (); Cache booksCache = új ConcurrentMapCache ("könyvek"); cacheManager.setCache (Arrays.asList (booksCache)); return cacheManager; } @Bean ("customKeyGenerator") public KeyGenerator keyGenerator () {return new CustomKeyGenerator (); }}
A második módszer az, hogy csak egy adott módszerhez használja:
@Component public class BookService {@Cacheable (value = "books", keyGenerator = "customKeyGenerator") public list getBooks () {List books = new ArrayList (); books.add (új könyv ("A hamisítók", "André Gide")); books.add (új könyv ("Peer Gynt és Hedda Gabler", "Henrik Ibsen"); Könyvek visszaküldése; }}
4. Következtetés
Ebben a cikkben egy egyéni tavaszi gyorsítótár megvalósításának módját tártuk fel KeyGenerator.
Mint mindig, a példák teljes forráskódja elérhető a GitHubon.