반응형

Cache 적용

 

작성일자 : 2019.09.28

환경 : Spring Boot 2.1.8

 

 

1. Cache 사용 설정

 

import org.springframework.cache.annotation.EnableCaching;

 

@SpringBootApplication
@EnableCaching
public class MybatistestApplication {
   public static void main(String[] args) {
      SpringApplication.run(MybatistestApplication.class, args);
   }
}

 

 

2. Cache 사용 대상 선언

 

  • @Cacheable: 캐시 채우기를 트리거합니다.

  • @CacheEvict: 캐시 제거를 트리거합니다.

  • @CachePut: 메소드 실행을 방해하지 않고 캐시를 업데이트합니다.

  • @Caching: 메소드에 적용 할 여러 캐시 조작을 재 그룹화합니다.

  • @CacheConfig: 클래스 수준에서 몇 가지 일반적인 캐시 관련 설정을 공유합니다.

 

import org.springframework.cache.annotation.Cacheable;

 

@Cacheable("CacheName")
public void method(){

   ... 

   ...

}

 

해당 설정 이후, 캐시 적용

 

 

3. 확인

 

*주의 : 같은 클래스 내의 캐시 적용 함수를 호출 시 캐시 기능 미적용 ( this.cacheMethod() 등 )

 

import org.springframework.cache.CacheManager;

 

public class MyClass {

        @RequestMapping("/cacheTest")
                public String cacheTest() {       
                      service.cacheMethod();  // Cache가 적용 된 함수 호출
                      return "test";
                }

}

 

@Cacheable("CacheName")
public String cacheMethod(){
         return "Test"
};

 

 

위와 같이 작성 후 cacheTest를 호출 하면 아래와 같이 진행

 

 

- 첫 접근 시

 

1. cacheTest 실행 

2. cacheMethod Cache 확인 ( 캐시 데이터 없음 )

3. cacheMethod 실행

4. cacheMethod 결과 값 캐싱

5. cacheMethod 결과 값 반환

5. cacheTest 결과 값 반환

 

 

- 이후 접근 시

 

1. cacheTest 실행 

2. cacheMethod Cache 확인 ( 캐시 데이터 존재 )

3. 캐시 데이터 반환 ( cacheMethod 미실행 )

 

 

캐싱 상황은 CacheManager를 통해 확인 가능

 

@Autowired 
CacheManager cacheManager;

 

 

첫 접근 시, 캐시 데이터 X

- Spring은 CacheManager로 ConcurrentMapCacheManager를 Default로 사용

 

 

이후 접근 시, 캐시 데이터 존재 확인

- 어노테이션 내 설정 아이디로 Key 생성 ( @Cacheable("CacheName") )

- 캐시 된 데이터 존재

 

 

반응형

'Java' 카테고리의 다른 글

Stream Example  (0) 2020.01.05
리스트 순환 중 아이템 삭제  (0) 2019.12.08
Spring Boot + MySQL 연동  (0) 2019.09.14
[spring boot] AOP 설정  (0) 2019.07.21
[Spring Boot-Vue] 프로젝트 빌드  (0) 2019.07.21

+ Recent posts