Spring Cache - Opprette en tilpasset KeyGenerator

1. Oversikt

I denne raske opplæringen skal vi illustrere hvordan du lager en tilpasset nøkkelgenerator med Spring Cache.

For en introduksjon til ovennevnte modul, se denne artikkelen.

2. KeyGenerator

Dette er ansvarlig for å generere hver nøkkel for hvert dataelement i hurtigbufferen, som vil bli brukt til å slå opp dataelementet ved henting.

Standardimplementeringen her er SimpleKeyGenerator - som bruker metodeparametrene som er gitt for å generere en nøkkel. Dette betyr at hvis vi har to metoder som bruker samme hurtigbuffernavn og sett med parametertyper, er det stor sannsynlighet for at det vil resultere i en kollisjon.

Det innebærer også at hurtigbufferdataene kan overskrives med en annen metode.

3. Tilpasset KeyGenerator

EN KeyGeneratortrenger å implementere bare en enkelt metode:

Objektgenererer (Objektobjekt, Metodemetode, Objekt ... params)

Hvis den ikke er implementert eller brukt riktig, kan det føre til overskriving av hurtigbufferdata.

La oss se på implementeringen:

offentlig klasse CustomKeyGenerator implementerer KeyGenerator {public Object genererer (Object target, Method method, Object ... params) {return target.getClass (). getSimpleName () + "_" + method.getName () + "_" + StringUtils. arrayToDelimitedString (params, "_"); }}

Etter det har vi to mulige måter å bruke den på; den første er å erklære en bønne i ApplicationConfig.

Det er viktig å merke seg at klassen må strekke seg fra CachingConfigurerSupport eller implementere CacheConfigurer:

@EnableCaching @Configuration offentlig klasse ApplicationConfig utvider CachingConfigurerSupport {@Bean offentlig CacheManager cacheManager () {SimpleCacheManager cacheManager = ny SimpleCacheManager (); Cache booksCache = ny ConcurrentMapCache ("bøker"); cacheManager.setCaches (Arrays.asList (booksCache)); returner cacheManager; } @Bean ("customKeyGenerator") offentlig KeyGenerator keyGenerator () {returner ny CustomKeyGenerator (); }}

Den andre måten er å bruke den bare for en bestemt metode:

@Component public class BookService {@Cacheable (value = "books", keyGenerator = "customKeyGenerator") public List getBooks () {List books = new ArrayList (); books.add (ny bok ("Counterfeiters", "André Gide")); books.add (ny bok ("Peer Gynt og Hedda Gabler", "Henrik Ibsen")); returnere bøker; }}

4. Konklusjon

I denne artikkelen har vi utforsket en måte å implementere en tilpasset Spring Cache på KeyGenerator.

Som alltid er hele kildekoden til eksemplene tilgjengelig på GitHub.


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