Cache 적용
작성일자 : 2019.09.28
환경 : Spring Boot 2.1.8
1. Cache 사용 설정
import org.springframework.cache.annotation.EnableCaching;
@SpringBootApplication |
2. Cache 사용 대상 선언
-
@Cacheable: 캐시 채우기를 트리거합니다.
-
@CacheEvict: 캐시 제거를 트리거합니다.
-
@CachePut: 메소드 실행을 방해하지 않고 캐시를 업데이트합니다.
-
@Caching: 메소드에 적용 할 여러 캐시 조작을 재 그룹화합니다.
-
@CacheConfig: 클래스 수준에서 몇 가지 일반적인 캐시 관련 설정을 공유합니다.
import org.springframework.cache.annotation.Cacheable;
@Cacheable("CacheName") ... ... } |
해당 설정 이후, 캐시 적용
3. 확인
*주의 : 같은 클래스 내의 캐시 적용 함수를 호출 시 캐시 기능 미적용 ( this.cacheMethod() 등 )
import org.springframework.cache.CacheManager;
public class MyClass { @RequestMapping("/cacheTest") } |
@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 |