Spring Cache – 커스텀 KeyGenerator 생성

1. 개요

이 빠른 자습서에서는 Spring Cache를 사용하여 사용자 지정 키 생성기를 만드는 방법을 설명합니다.

위 모듈에 대한 소개는이 기사를 참조하십시오.

2. KeyGenerator

이는 검색시 데이터 항목을 조회하는 데 사용되는 캐시의 각 데이터 항목에 대한 모든 키를 생성합니다.

여기에서 기본 구현은 SimpleKeyGenerator 로, 제공된 메소드 매개 변수를 사용하여 키를 생성합니다. 즉, 동일한 캐시 이름과 매개 변수 유형 세트를 사용하는 두 가지 메소드가있는 경우 충돌이 발생할 가능성이 높습니다.

또한 다른 방법으로 캐시 데이터를 덮어 쓸 수 있음을 의미합니다.

3. 사용자 지정 KeyGenerator

의 KeyGenerator는 단지 하나의 방법을 구현해야합니다 :

Object generate(Object object, Method method, Object... params)

제대로 구현되거나 사용되지 않으면 캐시 데이터를 덮어 쓸 수 있습니다.

구현을 살펴 보겠습니다.

public class CustomKeyGenerator implements KeyGenerator { public Object generate(Object target, Method method, Object... params) { return target.getClass().getSimpleName() + "_" + method.getName() + "_" + StringUtils.arrayToDelimitedString(params, "_"); } }

그 후에는 두 가지 방법으로 사용할 수 있습니다. 첫 번째는 ApplicationConfig 에서 빈을 선언하는 것 입니다.

클래스가 CachingConfigurerSupport 에서 확장 하거나 CacheConfigurer를 구현 해야한다는 점에 주목하는 것이 중요 합니다 .

@EnableCaching @Configuration public class ApplicationConfig extends CachingConfigurerSupport { @Bean public CacheManager cacheManager() { SimpleCacheManager cacheManager = new SimpleCacheManager(); Cache booksCache = new ConcurrentMapCache("books"); cacheManager.setCaches(Arrays.asList(booksCache)); return cacheManager; } @Bean("customKeyGenerator") public KeyGenerator keyGenerator() { return new CustomKeyGenerator(); } }

두 번째 방법은 특정 방법에만 사용하는 것입니다.

@Component public class BookService { @Cacheable(value = "books", keyGenerator = "customKeyGenerator") public List getBooks() { List books = new ArrayList(); books.add(new Book("The Counterfeiters", "André Gide")); books.add(new Book("Peer Gynt and Hedda Gabler", "Henrik Ibsen")); return books; } }

4. 결론

이 기사에서 우리는 커스텀 Spring Cache의 KeyGenerator 를 구현하는 방법을 탐구했습니다 .

항상 그렇듯이 예제의 전체 소스 코드는 GitHub에서 사용할 수 있습니다.