[SPRING] @ 복잡한 캐시 키가있는 캐시 가능
SPRING@ 복잡한 캐시 키가있는 캐시 가능
Spring (3.1)에서 @Cacheable을 사용하려면 다음과 같이해야합니다.
봄:
<?xml version="1.0" encoding="UTF-8" ?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:oauth="http://www.springframework.org/schema/security/oauth2"
xmlns:sec="http://www.springframework.org/schema/security"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:cache="http://www.springframework.org/schema/cache"
xmlns:mongo="http://www.springframework.org/schema/data/mongo"
xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:p="http://www.springframework.org/schema/p"
xmlns:aop="http://www.springframework.org/schema/aop"
xsi:schemaLocation="http://www.springframework.org/schema/security/oauth2
http://www.springframework.org/schema/security/spring-security-oauth2-1.0.xsd
http://www.springframework.org/schema/data/mongo
http://www.springframework.org/schema/data/mongo/spring-mongo-1.0.xsd
http://www.springframework.org/schema/cache
http://www.springframework.org/schema/cache/spring-cache.xsd
http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.1.xsd
http://www.springframework.org/schema/security http://www.springframework.org/schema/security/spring-security-3.1.xsd
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.1.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.1.xsd">
<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" />
메이븐 :
<dependency>
<groupId>net.sf.ehcache</groupId>
<artifactId>ehcache-core</artifactId>
<version>2.5.3</version>
</dependency>
캐시 된 메소드 :
@Cacheable(value="cahceName", key="concat(#param1).concat(‘-’).concat(#param2)")
public String cachedMethod(String param1,String param2)
아아, 코드를 디버깅 할 때 param1과 param2가 같아도 (즉, cahce가 사용되지 않아도) 캐시 된 메소드가 두 번 이상 호출되는 것을 볼 수 있습니다.
어떤 아이디어?
해결법
-
==============================
1.키가 올바르게 표시되지 않습니다.
키가 올바르게 표시되지 않습니다.
- @Cacheable (value = "cacheName", key = "# param1.concat ( '-'). concat (# param2)")
또한 컴파일이 디버그 정보없이 완료되면 param1, param2 인수 이름을 표현식 평가자가 사용할 수 없게됩니다. 대신 p0, p1 등을 사용하여 다음과 같이 참조 할 수 있습니다.
@Cacheable (값 = "cahceName", 키 = "# p0.concat ( '-'). concat (# p1)")
최신 정보:
여기 어떻게 작동하는지 보여주는 한 페이지 테스트가 있습니다 - https://gist.github.com/3315275
from https://stackoverflow.com/questions/11889428/spring-cacheable-with-complex-keys-still-executed by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] 봄 콩을 스포크 테스트에 주입하는 법 (0) | 2019.03.30 |
---|---|
[SPRING] 스프링의 @RequestParam 주석 내부 작업 (0) | 2019.03.30 |
[SPRING] DDD에서 도메인 로직과 이벤트 간의 트랜잭션을 어떻게 관리합니까? (0) | 2019.03.30 |
[SPRING] Spring MVC 응용 프로그램에 플러그인 할 수있는 CMS를 찾고 있습니다 [닫힘] (0) | 2019.03.30 |
[SPRING] Spring의 조건부 유효성 검사 (0) | 2019.03.30 |