EHCache는 주석 (재 인쇄)

사실 EHCache는 사용에서 봄 캐시 주석입니다.

@Cacheable 1.1
@Cacheable이 방식으로 분류 될 수 있고, 또한, 클래스를 표시 할 수있다. 이 마크는 클래스의 클래스 메소드는 모든 캐시 태그 방식으로 지원됩니다 표시 할 때 방법은 캐시를 지원하는 것을 나타냅니다. 이 호출 된 후 캐싱을 지원하는 방법을, 봄은 다시 방법을 수행 할 필요없이, 당신이 방법은 결과 캐시에서 직접 동일한 매개 변수를 사용하여 수행되는 다음 시간을 얻을 수 있도록, 가치 캐시를 반환합니다. 반환 값 캐싱 방법 봄이 리턴 키 캐싱을 기반으로, 값은 기본 정책 및 사용자 정의 정책이 나중에 설명한다, 키워드로, 봄이 방법의 결과이며 두 가지 전략을 지원합니다. 하나가 지원하는 경우 캐싱 방법은 캐시 기능을 트리거하지 않습니다 객체의 내부라고합니다. @Cacheable는 세 가지 속성, 값, 키와 조건을 지정할 수 있습니다.

캐시 1.1.1 value 속성은 이름 지정
리턴 값을 나타내는, 값의 속성을 지정해야 현재의 방법은 캐시, 캐시 된 이름에 대응하는 캐시 될 것이다. 하나 일 수도 있고, 캐시 어레이의 복수로 지정할 필요가있을 때, 캐시 캐시 복수 일 수있다.

   @Cacheable("cache1")//Cache是发生在cache1上的
   public User find(Integer id) { return null; } @Cacheable({"cache1", "cache2"})//Cache是发生在cache1和cache2上的 public User find(Integer id) { return null; } 

1.1.2 키 특성 사용자 지정 키
키 속성은 해당 캐시 봄 키는 방법의 결과를 반환 할 때 지정하는 데 사용됩니다. 이 건물은 SpringEL 식을 지원합니다. 우리가이 속성을 지정하지 않으면, 봄이 기본 전략은 키를 생성 사용합니다. 기본 정책은 나중에 별도로 소개 될 예정으로 여기에서 우리는 사용자 정의 정책을 살펴.
사용자 정의 정책은 우리가 봄 EL 표현식에 의해 우리의 키를 지정 할 수 있음을 의미합니다. 여기에 EL 표현식은 매개 변수와 해당 속성을 사용할 수 있습니다. 메소드 매개 변수를 사용하는 경우 우리는 직접 "# 매개 변수 이름"또는 "#p를 매개 변수 인덱스"를 사용할 수 있습니다. 다음의 예와 같은 주요 매개 변수 중 일부입니다.

  @Cacheable(value="users", key="#id")
  public User find(Integer id) { return null; } @Cacheable(value="users", key="#p0") public User find(Integer id) { return null; } @Cacheable(value="users", key="#user.id") public User find(User user) { return null; } @Cacheable(value="users", key="#p0.id") public User find(User user) { return null; } 

키와 상기 방법 매개 변수 외에도, Spring은 우리가 키를 생성하는 데 사용되는 루트 개체를 제공합니다. 우리는 루트 개체를 통해 다음과 같은 정보를 얻을 수 있습니다.

 
Paste_Image.png

우리가 키로 루트 개체의 속성을 사용할 때 기본 봄 속성은 사용의 루트 객체이기 때문에 우리는 "#root"는 생략 할 수 있습니다. 예를 들면 :

  @Cacheable(value={"users", "xxx"}, key="caches[1].name")
  public User find(User user) { return null; } 

1.1.3 상태 속성은 조건이 발생하는 지정
때때로 우리는 모든 결과를 반환하는 방법을 캐시 할 수 없습니다. 이 기능은 상태 속성을 통해 달성 될 수있다. 빈에 조건 속성의 기본값은 모든 통화 상황을 캐시됩니다. 값이 캐시 처리가 참일 때 SpringEL 식에 의해 지정된다 나타내며, 즉 캐시가 아니라, 상기 방법에있어서,이 때 오류 번 호출 될 때마다 실행된다. 예를 들어 다음은 아이디 사용자의 짝수 캐시 될 때에 만 나타냅니다.

  @Cacheable(value={"users"}, key="#user.id", condition="#user.id%2==0")
  public User find(User user) { System.out.println("find user by user " + user); return user; } 

1.2 @CachePut
로부터 직접이 방법을 수행하기에 더 이상이지만, 경우에 사용 @Cacheable 표시된 스프링 캐시 환경의 지원으로는, 스프링은, 각 실행 캐시 전에 동일 키 수표 캐시 요소가 없는지 캐시는 결과 그렇지 않으면 실행하고 지정된 캐시에 결과를 반환, 반환받을.
@CachePut는 캐싱 기능을 지원하는 방법을 선언 할 수 있습니다. @Cacheable 방법은 표시되지 않는다는 @CachePut가 실행 전에 캐시 전에이 실시되었는지 여부의 결과를 확인했지만 방법마다 수행되고, 키 값의 실행 결과 (반환 값)은 제외 지정된 캐시로 형성한다. 반환 값이 있어야합니다 그래서, 더 리턴 값은 새 캐시에 저장되지 않습니다.
@CachePut은 클래스 및 메소드에 표시 될 수있다. @CachePut 사용하는 경우 @Cacheable은 동일로 우리는 속성을 지정할 수 있습니다.

  @CachePut("users")//每次都会执行方法,并将结果存入指定的缓存中
  public User find(Integer id) { return user; } 

@CacheEvict 1.3
@CacheEvict은 클래스 나 메소드의 캐시 요소를 취소 할 필요에 표시하는 데 사용됩니다. 어떤 트리거 정리를 모두 수행하는 방법을 나타낼 때 클래스의 캐시 태그입니다. @CacheEvict는 속성 값, 키, 상태, allEntries 및 beforeInvocation을 지정할 수 있습니다. 상기 특성 값, 키 및 상태 대응 @Cacheable 유사한 의미. 다음 생성 된 기본 키 전략을 지정하지 않을 경우 키를 취소 할 필요를 표현 키;이 값은 정리 작업이 캐시에 일어난 (해당 캐시의 이름)입니다 나타내는 조건이 작동 조건이 발생 웁니다. 여기서 우리는 두 가지 속성의 allEntries을 소개하고 beforeInvocation 신흥.
1.3.1 allEntries 속성
allEntries 부울 모든 요소가 캐시를 삭제해야하는지 여부를 나타내는 입력합니다. 기본값은 거짓, 필요하지하는 의미입니다. 당신이 allEntries이 참 지정하면, 봄 캐시는 지정된 키를 무시합니다. 때때로 우리는보다 효율적인의 명확한 요소보다 모든 요소를 삭제 캐시 볼 필요가있다.

  @CacheEvict(value="users", allEntries=true)
  public void delete(Integer id) { System.out.println("delete user by id: " + id); } 

1.3.2 beforeInvocation 속성
의 기본이 대응하는 방법에 의해 트리거 된 후 정리 청산 작업이 발생하고 반환되는 예외 상황으로 인해 실패 할 경우 그 방법은 트리거되지 않습니다, 성공. 우리는 속성 값이 true 지정하면, 트리거 정리 시간을 변경 beforeInvocation를 사용, 봄이 메서드를 호출하기 전에 캐시에 지정된 요소를 삭제합니다.

  @CacheEvict(value="users", beforeInvocation=true)
  public void delete(Integer id) { System.out.println("delete user by id: " + id); } 

사실, 캐시 요소를 취소 @CacheEvict 사용하지만, 우리가 달성하기로으로 Ehcache를 사용하는 경우, 우리는 또한으로 Ehcache은으로 Ehcache 프로파일에 지정된 자신의 전략을 없애 구성 할 수 있습니다에 추가한다.
1.4 @Caching
@Caching 주석하는 것은 우리가 하나의 방법 또는 클래스에 관련된 여러 주석 봄 캐시를 지정할 수 있습니다. 그것은 세 가지 속성이 있습니다 캐시, 넣고 EVICT을 CachePut 및 @CacheEvict @, 캐시 가능 @ 지정하는 데 사용됩니다.

   @Caching(cacheable = @Cacheable("users"), evict = { @CacheEvict("cache2"), @CacheEvict(value = "cache3", allEntries = **true**) }) **public** User find(Integer id) { **return****null**; } 

기본 정책의 3.1 키
의 KeyGenerator하여 기본 키 생성 전략은 다음과 같이 기본 전략이며, 생성됩니다

  • 방법 매개 변수가없는 경우 0을 키로서 사용된다.
  • 하나 개의 매개 변수 경우,이 매개 변수는 키로서 사용된다.
  • 하나 개 이상의 매개 변수를하는 경우, 다음 키로 해시 코드 모든 매개 변수를 사용합니다.

우리는 자신의 기본 정책을 지정해야하는 경우, 우리는 당신의 자신의 KeyGenerator을 구현하고 우리 자신의 정의를하는 KeyGenerator하는 데 사용하는 KeyGenerator 우리의 봄 캐시를 지정할 수 있습니다.
캐시가 사용하는 주석 기반 구성 : 주석 중심의 지정된.

   <cache:annotation-driven key-generator=*"userKeyGenerator"*/>
  
   <bean id="userKeyGenerator" class="com.xxx.cache.UserKeyGenerator"/> 

캐시를 통해 XML 기반 구성을 사용하는 경우 : 조언 지정합니다.

   <cache:advice id="cacheAdvice" cache-manager="cacheManager" key-generator="userKeyGenerator"> </cache:advice> 

중요 :
사실 EHCache는 사용에서 객체가 캐시 기능을 트리거하지 않습니다 내부의 봄 캐시 주석이 하나가 지원하는 경우 캐싱 방법이라는 것을 주목해야한다.
@Cacheable 파라미터 : 값이 캐시 키를 키에 대응하는 캐시 된 결과를 표시 방법을 지칭하는 캐시 수단, 조건은 어떤 상황에서 캐시를 말한다.
이 캐시에서 발견되면 @Cacheable 같은 키는 캐시에서 데이터를 가져옵니다. @CachePut 다음 캐시에 결과를 때마다 다시 실행합니다. 캐시를 지우 @CacheEvict.
어떤 키합니다. 이것은, 당신은 또한 키 생성 전략을 사용자 정의 할 수있는 기본 전략은 키 (매개 변수)입니다



링크 : HTTPS : //www.jianshu.com/p/db110523a387의
참조  http://www.iteye.com/blogs/subjects/ehcache

추천

출처www.cnblogs.com/guanbin-529/p/10927711.html