> Java > java지도 시간 > 본문

Java Spring의 캐시 키 구성에 대한 참고 사항

黄舟
풀어 주다: 2017-10-17 09:29:27
원래의
2054명이 탐색했습니다.

이 글은 주로 java spring-cache 키 설정에 대한 주의사항을 소개하는 글인데 편집자가 꽤 좋다고 생각해서 필요한 친구들이 참고할 수 있도록 공유합니다.

프로젝트의 동시성 성능을 향상하려면 외부 데이터 소스 액세스, Restful API 호출, 재사용 가능한 복잡한 계산 등 세 가지 유형의 함수 처리 결과를 캐시하는 로컬 메모리 캐시를 도입하는 것이 좋습니다. 현재 spring Cache의 @Cacheable 어노테이션 방식이 사용되고 있으며, 구체적인 캐시 구현은 Guava Cache이다.
여기에서는 구체적인 캐시 구성을 소개하지 않지만 주요 구성을 설명합니다.

1. 기본 형태


@Cacheable(value="cacheName", key"#id")  
public ResultDTO method(int id);
로그인 후 복사

2. 조합 형태


@Cacheable(value="cacheName", key"T(String).valueOf(#name).concat('-').concat(#password))  
public ResultDTO method(int name, String password);
로그인 후 복사

3. 양식


@Cacheable(value="cacheName", key"#user.id) 
public ResultDTO method(User user);
로그인 후 복사

4. 사용자 정의 키 생성기


@Cacheable(value="gomeo2oCache", keyGenerator = "keyGenerator") 
public ResultDTO method(User user);
로그인 후 복사

참고: Spring의 기본 SimpleKeyGenerator는 다음과 같이 함수 이름을 키


에 결합하지 않습니다.

우리는 출력:


@Component 
public class CacheTestImpl implements CacheTest { 
  @Cacheable("databaseCache") 
  public Long test1() 
  { return 1L; } 
  @Cacheable("databaseCache") 
  public Long test2() 
  { return 2L; } 
  @Cacheable("databaseCache") 
  public Long test3() 
  { return 3L; } 
  @Cacheable("databaseCache") 
  public String test4() 
  { return "4"; } 
}
로그인 후 복사

실제 출력은 다음과 같습니다.


1 
2 
3 
4
로그인 후 복사

또한 원자 유형의 배열은 키로 직접 사용하면 적용되지 않습니다.


위의 두 가지 문제를 해결하기 위해 A를 사용자 정의했습니다. KeyGenerator는 다음과 같습니다:


1 
1 
1 
ClassCastException: java.lang.Long cannot be cast to java.lang.String
로그인 후 복사

이 방법을 사용하면 다중 매개변수, 원자 유형 배열, 메서드 이름 식별 등과 같은 문제를 해결할 수 있습니다.


요약

위 내용은 Java Spring의 캐시 키 구성에 대한 참고 사항의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿