31, JSR107의 springboot-- 캐시 - 캐싱 및 @CacheConfig 사용 @ ⑤

A, @Caching은  복잡한 캐싱 규칙을 정의

  1, 캐싱 인터페이스 출처 :

@Target ({ElementType.TYPE, ElementType.METHOD}) 
@Retention (RetentionPolicy.RUNTIME) 
@Inherited 
@Documented 
공개 @ 인터페이스 캐싱 { 
    캐시 가능 [] 캐시 () 기본 {}; 

    CachePut [] 넣어 () 기본 {}; 

    CacheEvict [] EVICT () 기본 {}; 
}

  2, 캐싱 사용 사례 @ 

    섹션의 기준이 lastName 직원에 쿼리 서비스 방법에있어서 추가

    (@Caching 
        캐시 = { 
                @Cacheable (값 = "EMP"키 = "#lastName" ) 
        }  = { 
                @CachePut (값 = "EMP"키 = "#의 result.id을" ) 
                @CachePut (값 = "EMP"키 = "#의 result.email") 
        } 
    )
     //이 경우는 ID, 이메일, LASTNAME는 각각의 데이터 키로서 이후에로드 할 캐시
    / *하지만있어서 캐시에서 촬영되지 각 쿼리에 대해 실행될 직원이 lastName 질의에 따른
        때문에 @CachePut 그것은 구현되어야한다 CachePut 캐시로 상기 방법을 수행 한 결과이다* /
    공용직원 getEmpByLastName (문자열이 lastName) {
        직원 EMP=employeeMapper.getEmpByLastName (이 lastName);
        반환 EMP; 
    }

    employeeMapper 적절한 매핑 SQL을 추가

@Select ( "SELECT * FROM EMPLOYEE 어디 LAST_NAME = # {이 lastName}" )
     공공 직원 getEmpByLastName (문자열과 lastName);

    에는 EmployeeController 항에있어서,

@RestController
 공공  클래스 에는 EmployeeController { 

    @Autowired 
    EmployeeService employeeService; 

    (@GetMapping "/ EMP / {자료}" )
     공중 직원 GetEmployee라는 (@PathVariable ( "ID" ) 정수 ID) { 
        직원 EMP = employeeService.getEmp (ID);
        반환 EMP; 
    } 

    @GetMapping ( "/ EMP" )
     공중 직원 updateEmployee (종업원의 종업원) { 
        직원 EMP = employeeService.updateEmp (사원);
        반환 EMP; 
    } 

    @GetMapping ("/ delEmp" )
     공공 문자열 deleteEmployee (정수 ID) { 
        employeeService.deleteEmp (ID); 
        반환 "성공" ; 
    }     @GetMapping (

 "/ EMP / lastName이라는 / {}이 lastName" )
     공중 직원 getEmpByLastName (@PathVariable ( "이 lastName" ) 문자열이 lastName) { 
        직원 EMP = employeeService.getEmpByLastName (이 lastName);
        반환 EMP; 
    } 
}

    시험 절차 :

      접속이 lastName 쿼리에 브라우저에서 첫 번째 링크에 따라, 프로젝트를 다시 시작

 

 

   (데이터 키가 캐시 후로드로, 각각이 때, 아이디, 이메일, LASTNAME을) SQL 쿼리가 전송

  장에 따르면 다음 직원 ID를 조회 :( 그런 다음 콘솔은 문제의 SQL은 설명하지 않는 캐시에서 쿼리 )

 

   그러나 우리는 다음 캐시에서하지 않는, 장 쿼리에 따라 성, 또는 SQL 쿼리를 발행, 때문에 @CachePut의 구성, CachePut가 캐시에 메소드의 구현의 결과이며 그것은 구현해야합니다

 

두, @ CacheConfig : 클래스 캐시 일반적인 구성을 지정, 구성은 방법이 아닙니다

@Target ({} ElementType.TYPE) 
@Retention (RetentionPolicy.RUNTIME) 
@Documented 
공개 @ 인터페이스 CacheConfig { 
    문자열 [] cacheNames () 기본 {}; 

    문자열의 KeyGenerator () 기본 "" ; 

    문자열 cacheManager () 기본 "" ; 

    문자열 cacheResolver () 기본 "" ; 
}

  의 클래스 구성 :

 

추천

출처www.cnblogs.com/lyh233/p/12561414.html