[SPRING] 스프링 캐시를위한 커스텀 KeyGenerator를 어떻게 설정합니까?
SPRING스프링 캐시를위한 커스텀 KeyGenerator를 어떻게 설정합니까?
스프링 3.1을 사용하고 있으며 새로운 캐시 기능을 사용하려고합니다. 다음, 나는 시도했다 :
<cache:annotation-driven />
<bean id="cacheManager" class="org.springframework.cache.ehcache.EhCacheCacheManager"
p:cache-manager-ref="ehcache" />
<!-- Ehcache library setup -->
<bean id="ehcache"
class="org.springframework.cache.ehcache.EhCacheManagerFactoryBean"
p:config-location="classpath:ehcache.xml" />
하지만 내 사용자 정의 KeyGenerator를 구성하는 방법을 찾지 못했습니다. 어떤 생각?
해결법
-
==============================
1.Spring 3.1 RC1에는 더 좋은 방법이있다.
Spring 3.1 RC1에는 더 좋은 방법이있다.
<cache:annotation-driven key-generator="myKeyGenerator"/> <bean id="myKeyGenerator" class="com.abc.MyKeyGenerator" /> import org.springframework.cache.interceptor.KeyGenerator; public class MyKeyGenerator implements KeyGenerator { public Object generate(Object target, Method method, Object... params) { }}
오늘 봄부터 스프링을 다운로드하면 작동하는 jar 파일에서 org.springframework.context.support-3.1.0.RC1.jar \ org \ springframework \ cache \ config \ spring-cache-3.1.xsd를 삭제하십시오. 벌금.
-
==============================
2.좋아, 이걸 할 방법을 찾았 어.
좋아, 이걸 할 방법을 찾았 어.
<!-- <cache:annotation-driven /> --> <bean id="annotationCacheOperationSource" class="org.springframework.cache.annotation.AnnotationCacheOperationSource" /> <bean id="cacheInterceptor" class="org.springframework.cache.interceptor.CacheInterceptor" p:cacheDefinitionSources-ref="annotationCacheOperationSource" p:cacheManager-ref="cacheManager" p:keyGenerator-ref="keyGenerator" /> <bean id="beanFactoryCacheOperationSourceAdvisor" class="org.springframework.cache.interceptor.BeanFactoryCacheOperationSourceAdvisor" p:adviceBeanName="cacheInterceptor" p:cacheDefinitionSource-ref="annotationCacheOperationSource" /> <bean id="keyGenerator" class="my.company.cache.ReflectionBasedKeyGenerator" />
보시다시피 AnnotationDrivenCacheBeanDefinitionParser를 사용하여 구성을 내 xml에 넣으면 작동합니다. 완료!
편집하다:
Spring> 3.2의 경우 CachingConfigurer를 구현하는 간단한 Java 클래스 구성을 사용할 수있다.
@EnableCaching(mode = AdviceMode.ASPECTJ) public class CacheConfig implements CachingConfigurer { public KeyGenerator keyGenerator() { return new ReflectionBasedKeyGenerator(); } public CacheManager cacheManager() { return new RedisCacheManager(redisCacheTemplate); } }
-
==============================
3.스프링 프레임 워크의 기본 Cache KeyGenerator에 문제가 발생했습니다. 종종 충돌이 발생하는 것으로 보이며이 문제에 기록 된 것 같습니다.
스프링 프레임 워크의 기본 Cache KeyGenerator에 문제가 발생했습니다. 종종 충돌이 발생하는 것으로 보이며이 문제에 기록 된 것 같습니다.
나는이 질문이 이미 답변으로 표시되어 있음을 알고 있지만, 나는 이것을 어떻게 해결했는지를 나눌 것이라고 생각했다.
<cache:annotation-driven cache-manager="cacheManager" key-generator="entityKeyGenerator" /> <bean id="cacheManager" class="org.springframework.cache.ehcache.EhCacheCacheManager"> <property name="cacheManager" ref="ehcache" /> </bean> <bean id="ehcache" class="org.springframework.cache.ehcache.EhCacheManagerFactoryBean" p:configLocation="classpath:/ehcache-dciComponent.xml" p:shared="true" />
기본적으로, 우리는 우리 자신의 Cache KeyGenerator를 만들고 사용했다.
from https://stackoverflow.com/questions/6730641/how-can-i-set-a-custom-keygenerator-for-spring-cache by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] 봄 OAuth2 TokenEndpoint에 대한 HTTP 기본 인증 사용 안 함 (0) | 2019.03.24 |
---|---|
[SPRING] 왜 @Transactional 메서드가있는 클래스는 자동 실행되지 않을 수 있습니까? (0) | 2019.03.24 |
[SPRING] war webapp의 Tomcat 서버 절대 파일 액세스 (0) | 2019.03.23 |
[SPRING] 스프링 프레임 워크 3.0에서 Hibernate와 Jdbc 사용하기 (0) | 2019.03.23 |
[SPRING] Spring 3 MVC - 고급 데이터 바인딩 - 간단한 객체 목록으로 폼 요청 (0) | 2019.03.23 |