[스프링] 스프링 캐시 애노테이션

스프링 프레임워크에서는 @Cacheable, @CachePut, @CacheEvict 등의 캐시 애노테이션을 제공하여 메서드의 결과를 캐싱할 수 있습니다.

@Cacheable

@Cacheable 애노테이션은 메서드의 반환 값을 캐싱합니다. 메서드가 호출될 때 먼저 캐시에 해당 값이 있는지 확인하고, 있을 경우 메서드 실행을 건너뛰고 캐시된 값을 반환합니다. 예를 들어, 동일한 파라미터로 여러 번 호출되는 메서드의 결과 값을 캐싱할 때 유용합니다.

예시:

import org.springframework.cache.annotation.Cacheable;
 
@Cacheable(value = "products", key = "#id")
public Product getProductById(String id) {
    // ...
}

@CachePut

@CachePut 애노테이션은 캐시를 업데이트합니다. 메서드를 호출하고 그 결과를 캐시에 저장합니다. 즉, 메서드 실행 결과에 상관없이 항상 새로운 값을 캐시에 저장합니다.

예시:

import org.springframework.cache.annotation.CachePut;
 
@CachePut(value = "products", key = "#product.id")
public Product updateProduct(Product product) {
    // ...
}

@CacheEvict

@CacheEvict 애노테이션은 캐시를 비웁니다. 즉, 메서드 실행 후에 특정 캐시 항목을 제거합니다.

예시:

import org.springframework.cache.annotation.CacheEvict;
 
@CacheEvict(value = "products", allEntries=true)
public void refreshCache() {
    // ...
}

이러한 캐시 애노테이션을 사용하여 스프링 애플리케이션에서 메서드 호출 결과를 캐싱하고 관리할 수 있습니다.

더 자세한 내용은 공식 문서를 참고하세요.