Spring Boot 통합 Spring Cache 과정 상세 설명

4601 단어 springboot집성cache
스프링 캐 시
캐 시 는 현재 응용 에서 점점 중요 해 지고 있 습 니 다.
Spring 은 3.1 부터 org.spring from work.cache.cache 와 org.spring from work.cache.cache Manager 인 터 페 이 스 를 정의 하여 서로 다른 캐 시 기술 을 통일 시 키 고 JCache(JSR-107)주 해 를 사용 하여 개발 을 간소화 하 는 것 을 지원 합 니 다.
SpringCache 를 통 해 자신의 Cache 를 빠르게 삽입 하여 실현 할 수 있 습 니 다.주로@Cacheable,@CachePut,@CacheEvict,@CacheConfig,@Caching 등 주석 으로 이 루어 집 니 다.
  • @Cacheable:방법 에 작용 하여 결 과 를 되 돌려 주 는 캐 시 에 사용 합 니 다.이 캐 시가 존재 하면 캐 시 에서 직접 가 져 옵 니 다.캐 시 키 는 입 참 에서 지정 할 수 있 고 캐 시 된 value 는 방법 으로 값 을 되 돌려 줍 니 다
  • @CachePut:방법 에 작용 합 니 다.이 캐 시가 존재 하 든 없 든 매번 캐 시 를 다시 추가 합 니 다.캐 시 키 는 입 참 에서 지정 할 수 있 습 니 다.캐 시 된 value 는 방법 으로 값 을 되 돌려 주 고 업데이트 에 자주 사 용 됩 니 다
  • @CacheEvict:방법 적 으로 캐 시 를 지 우 는 데 사 용 됩 니 다
  • @CacheConfig:클래스 에 작용 하여 이러한 캐 시 주해 의 속성 을 통일 적 으로 설정 합 니 다
  • @Caching:방법 에 작용 하여 여러 개의 캐 시 를 한꺼번에 설정 합 니 다
  • @EnableCashing:클래스 에 작용 하여 주해 기능 을 켜 는 데 사 용 됩 니 다
  • 2.예시
    Spring Cache 를 사용 하려 면 Spring Cache 의존 도 를 먼저 도입 해 야 합 니 다.
    
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <!--Spring Cache  -->
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-cache</artifactId>
    </dependency>
    그리고 시작 클래스 에 서 는@EnableCashing 을 사용 하여 캐 시 를 열 어야 합 니 다.
    
    @EnableCaching //    
    @SpringBootApplication
    public class SpringbootApplication {
    
      public static void main(String[] args) {
        SpringApplication.run(SpringbootApplication.class, args);
      }
    
    }
    이렇게 하면 캐 시 를 조작 할 수 있 습 니 다.CacheService 류 를 만 들 수 있 습 니 다.그 중에서 dataMap 의 Map 은 데 이 터 를 저장 하여 데이터 베 이 스 를 절약 할 수 있 습 니 다.
    
    @Slf4j
    @Service
    public class CacheService {
    
      private Map<Integer, User> dataMap = new HashMap <Integer, User>(){
        {
          for (int i = 1; i < 100 ; i++) {
            User u = new User("code" + i, "name" + i);
            put(i, u);
          }
        }
       };
    
      //     
      @Cacheable(value = "cache", key = "'user:' + #id")
      public User get(int id){
        log.info("  id{}    ", id);
        return dataMap.get(id);
      }
    
      //     
      @CachePut(value = "cache", key = "'user:' + #id")
      public User set(int id, User u){
        log.info("  id{}  ", id);
        dataMap.put(id, u);
        return u;
       }
       
      //    
      @CacheEvict(value = "cache", key = "'user:' + #id")
      public User del(int id){
        log.info("  id{}  ", id);
        dataMap.remove(id);
        return u;
      }
    
    }
    get 방법 시 뮬 레이 션 조회,@Cacheable 은 캐 시 를 추가 하 는 데 사 용 됩 니 다.set 방법 은 수정 에 사 용 됩 니 다.@CachePut 는 캐 시 를 업데이트 하고 del 방법 은 데 이 터 를 삭제 하 는 데 사 용 됩 니 다.@CacheEvict 는 캐 시 를 삭제 합 니 다.주의해 야 할 것 은 주 해 된 value 는 캐 시 분 류 를 나타 내 는 것 이지 캐 시 대상 값 을 가리 키 는 것 이 아니다.
    그리고 CacheApi 를 만 들 고 CacheService 를 호출 하여 테스트 합 니 다.
    
    @RestController
    @RequestMapping("cache")
    public class CacheApi {
    
      @Autowired
      private CacheService cacheService;
    
      @GetMapping("get")
      public User get(@RequestParam int id){
        return cacheService.get(id);
      }
    
      @PostMapping("set")
      public User set(@RequestParam int id, @RequestParam String code, @RequestParam String name){
        User u = new User(code, name);
        return cacheService.set(id, u);
      }
    
      @DeleteMapping("del")
      public void del(@RequestParam int id){
        cacheService.del(id);
      }
    }
    그리고 저희 가 swagger-ui 인 터 페 이 스 를 켜 보도 록 하 겠 습 니 다.http://localhost:10900/swagger-ui.html)테스트 를 하고 여러 번 조 회 를 호출 하면 CacheService 의 get 방법 을 볼 수 있 으 며 같은 id 에 대해 한 번 만 실행 할 수 있 습 니 다.그 다음 에 업 데 이 트 를 호출 하고 다시 get 을 하면 데이터 가 업데이트 되 었 음 을 발견 할 수 있 으 며,del 을 호출 하면 캐 시 를 지우 고 다시 조회 하면 호출 방법 을 사용 할 수 있 습 니 다.

    원본 주소:https://github.com/imyanger/springboot-project/tree/master/p20-springboot-cache
    이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.

    좋은 웹페이지 즐겨찾기