Spring 학습 노트 의 캐 시 데이터
8825 단어 봄 학습 노트
1. 캐 시 지원 사용 하기
Spring 의 캐 시 지원 은 두 가지 방법 이 있 습 니 다.
@Configuration
@EnableCaching //
public class CachingConfig {
//
@Bean
public CacheManager cacheManager(){
return new ConcurrentMapCacheManager();
}
}
XML 설정:
id="cacheManager" class=
"org.springframework.cache.concurrent.ConcurrentMapCacheManager" />
본질 적 으로 @ EnableCashing 과
의 작업 방식 은 같다.그들 은 모두 절단면 을 만 들 고 Spring 캐 시 주 해 를 촉발 하 는 절 점 을 만 들 것 이다.사용 한 주석 과 캐 시 상태 에 따라 이 절단면 은 캐 시 에서 데 이 터 를 가 져 와 캐 시 에 추가 하거나 캐 시 에서 값 을 제거 합 니 다.위의 코드 에서 우 리 는 캐 시 뿐만 아니 라 캐 시 관리자 도 설정 했다.캐 시 관리 자 는 Spring 캐 시 추상 의 핵심 으로 여러 유행 하 는 캐 시 와 통합 할 수 있 습 니 다.위 에서 설명 한 Concurrent MapCacheManager 는 자바 util. concurrent. Concurrent HashMap 을 캐 시 로 저장 합 니 다.잘 맞 혔 습 니 다. 메모리 기반 이기 때문에 성명 주 기 는 응용 과 관련 이 있 습 니 다.생산 등급 의 대형 기업 급 응용 프로그램 에 대해 서 는 이상 적 인 선택 이 아 닐 수도 있다.다음은 가장 많이 사용 되 는 캐 시 관리자 몇 개 를 살 펴 보 겠 습 니 다.
1.1 캐 시 관리자 설정
Spring 3.1 에 다섯 개의 캐 시 관리자 가 내장 되 어 있 습 니 다. 다음 과 같 습 니 다.
핵심 적 인 Spring 프레임 워 크 를 제외 하고 Spring Data 는 두 개의 캐 시 관리 자 를 제공 합 니 다.
@Configuration
@EnableCaching //
public class CachingConfig {
//
@Bean
public EhCacheCacheManager cacheManager(CacheManager cm){
return new EhCacheCacheManager(cm);
}
@Bean
public EhCacheManagerFactoryBean ehcache(){
EhCacheManagerFactoryBean ehCacheFactoryBean = new EhCacheManagerFactoryBean();
ehCacheFactoryBean.setConfigLocation(
new ClassPathResource("cache/ehcache.xml"));
ehCacheFactoryBean.setShared(true);
return ehCacheFactoryBean;
}
}
ehcache.xml:
<ehcache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="http://ehcache.org/ehcache.xsd">
<cache name="testCache"
maxBytesLocalHeap="50m"
timeToLiveSeconds="100">
cache>
ehcache>
Spring 과 Ehcache 는 모두 CacheManager 형식 을 정의 합 니 다.명확 한 것 은 EhCache 의 Cache Manager 가 Spring 의 EhCache Cache Manager (Spring Cache Manager 의 실현) 에 주입 되 어야 한 다 는 것 이다.그 밖 에 EhCache 는 XML 에 자신의 설정 모드 를 정 의 했 습 니 다. 우 리 는 XML 파일 에 캐 시 를 설정 해 야 합 니 다. 위의 ehcache. xml 은 간단 한 설정 입 니 다. testcache 라 는 캐 시 를 설명 합 니 다. 가장 큰 더 미 는 50MB 이 고 생존 시간 은 100 초 입 니 다.
Redis 캐 시 를 사용 하여 추가
2. 캐 시 를 지원 하기 위해 주 해 를 추가 합 니 다.
표 의 모든 주 해 는 방법 이나 유형 에 활용 할 수 있다.하나의 방법 에 두 었 을 때 설명 한 캐 시 행 위 는 이 방법 에 만 사 용 됩 니 다.주 해 를 클래스 단계 에 두 면 캐 시 행 위 는 이러한 모든 방법 에 적 용 됩 니 다.
주해
묘사 하 다.
@Cacheable
Spring 이 호출 방법 을 표시 하기 전에 캐 시 에서 방법의 반환 값 을 찾 아야 합 니 다.이 값 을 찾 을 수 있다 면 캐 시 값 을 되 돌려 줍 니 다.그렇지 않 으 면 이 방법 이 호출 되 고 반환 값 은 캐 시 에 넣 습 니 다.
@CachePut
Spring 에서 말 해 야 할 방법의 반환 값 을 캐 시 에 표시 합 니 다.방법 이 호출 되 기 전에 캐 시 를 검사 하지 않 고 방법 은 항상 호출 됩 니 다.
@CacheEvict
Spring 이 캐 시 에 하나 이상 의 항목 을 알 아야 함 을 표시 합 니 다.
@Caching
이것 은 그룹 별 주석 으로 여러 개의 다른 캐 시 주석 을 동시에 사용 할 수 있 습 니 다.
2.1 캐 시 채 우기
@ Cacheable 과 @ CachePut 는 공 통 된 속성 이 있 습 니 다.
속성
유형
묘사 하 다.
value
String[]
사용 할 캐 시 이름
condition
String
SpEL 표현 식, false 값 을 얻 으 면 캐 시 를 호출 방법 에 적용 하지 않 습 니 다.
key
String
사용자 정의 캐 시 키 를 계산 하 는 SpEL 표현 식
unless
String
SpEL 표현 식, 값 이 true 이면 되 돌아 오 는 값 은 캐 시 에 넣 지 않 습 니 다.
예시:
@Cacheable("testCache")
public User findOne(int id){
System.out.println("findOne ");
return this.sdjr.findOne(id);
}
@CachePut(value="testCache",key="#result.id")
public User save(User user){
System.out.println("save ");
return this.sdjr.saveAndFlush(user);
}
key = "result. id" 는 사용자 정의 캐 시 key 로 SpEL 표현 식 을 사용 합 니 다.Spring 은 캐 시 규칙 을 정의 하 는 여러 개의 SpEL 확장 을 제공 합 니 다.
표현 식
묘사 하 다.
#root.args
캐 시 방법 에 전달 되 는 매개 변 수 는 배열 입 니 다.
#root.caches
이 방법 이 실 행 될 때 대응 하 는 캐 시 는 배열 형식 입 니 다.
#root.target
목표 대상
#root.targetClass
목표 대상 의 유형 은
#root.target.class
의 약자 형식 이다.#root.method
캐 시 방법
#root.methodName
캐 시 방법의 이름 은
#root.method.name
의 약자 형식 입 니 다.#result
방법 이 호출 한 반환 값 (@ Cacheable 주석 에 사용 할 수 없습니다)
#Argument
임의의 방법 매개 변수 이름 (예 를 들 어
#argName
또는 매개 변수 색인 (예 를 들 어 #a0
또는 #p0
)@ Cacheable 과 @ CachePut 는 조건 화 캐 시 를 실현 하기 위해 두 개의 속성 을 제공 합 니 다. unless 와 condition, 이 두 속성 은 모두 하나의 SpEL 표현 식 을 받 아들 입 니 다.그것들 사이 에는 약간의 차이 가 있다.unless 속성 은 대상 을 캐 시 에 넣 는 것 을 막 을 수 있 습 니 다. true 일 때 캐 시 방법 으로 되 돌아 오 는 데 이 터 는 캐 시 에 넣 지 않 습 니 다.그러나 이 방법 이 호출 될 때 도 캐 시 에서 찾 습 니 다. 일치 하 는 값 을 찾 으 면 일치 하 는 값 을 되 돌려 줍 니 다.이와 달리 condition 의 표현 식 계산 결과 가 false 라면 이 방법 을 호출 하 는 과정 에서 캐 시 는 사용 되 지 않 습 니 다.캐 시 에 가서 찾 지 않 고 되 돌아 오 는 값 도 캐 시 에 넣 지 않 는 다 는 것 이다.
2.2 캐 시 항목 삭제
@ CacheEvict 는 캐 시 에 다른 것 을 추가 하지 않 습 니 다.반대로 @ CacheEvict 주석 이 있 는 방법 이 호출 되면 하나 이상 의 항목 이 캐 시 에서 삭 제 됩 니 다. @CacheEvict 주해 의 속성, 어떤 캐 시 항목 이 삭제 되 어야 하 는 지 지정 합 니 다.
속성
유형
묘사 하 다.
value
String[]
사용 할 캐 시 이름
key
String[]
사용자 정의 캐 시 키 를 계산 하 는 SpEL 표현 식
condition
String
SpEL 표현 식, false 값 을 얻 으 면 캐 시 는 호출 방법 에 적용 되 지 않 습 니 다.
allEntries
boolean
트 루 라면 특정 캐 시 에 있 는 모든 항목 이 삭 제 됩 니 다.
beforeInvocation
boolean
트 루 라면 방법 이 호출 되 기 전에 항목 을 삭제 합 니 다.false (기본 값) 라면 방법 이 성공 적 으로 호출 된 후에 항목 을 삭제 합 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Spring 학습 노트 의 캐 시 데이터의 작업 방식 은 같다.그들 은 모두 절단면 을 만 들 고 Spring 캐 시 주 해 를 촉발 하 는 절 점 을 만 들 것 이다.사용 한 주석 과 캐 시 상태 에 따라 이 절단면 은 캐 시 에서 데 이 터 를 가 져...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.