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.