Pink Spider/Cacheable 어노테이션에 대해서

Created Tue, 01 Apr 2025 11:34:10 +0900 Modified Mon, 08 Dec 2025 08:41:47 +0900
461 Words 2 min

@Cacheable 어노테이션은 Spring Framework에서 메서드의 반환값을 캐시에 저장하여, 같은 인자가 들어올 경우 캐시된 값을 재사용하도록 하는 기능을 제공합니다. 즉, 메서드를 반복적으로 호출하더라도 실제로는 처음 한 번만 실행되고, 이후 호출은 캐시된 결과를 반환하게 됩니다.


📌 주요 역할 요약

  • 중복 호출 방지: 동일한 입력값에 대해 메서드를 반복 호출하면, 캐시된 결과를 반환해 성능 향상.
  • 결과 저장: 메서드 실행 결과를 캐시에 저장.
  • 조건부 캐싱: 특정 조건에 따라 캐싱 여부 제어 가능.

✅ 기본 사용 예시

@Cacheable("users")
public User findUserById(Long id) {
    // 실제로는 DB나 외부 API 호출
    return userRepository.findById(id).orElse(null);
}
  • 위 메서드는 users라는 캐시 이름으로 결과를 저장합니다.
  • id가 동일한 경우, 이후 호출은 캐시된 User 객체를 반환합니다.

🔧 주요 속성

속성 설명
value 또는 cacheNames 사용할 캐시 이름 지정
key 캐시 키를 지정 (SpEL 표현식 사용 가능)
condition 캐싱할 조건 지정 (SpEL)
unless 결과를 저장하지 않을 조건 (SpEL)

예시:

@Cacheable(value = "books", key = "#isbn", unless = "#result == null")
public Book findBook(String isbn) {
    return bookRepository.findByIsbn(isbn);
}

🧠 함께 알아두면 좋은 어노테이션

  • @CachePut : 캐시를 강제로 업데이트할 때 사용
  • @CacheEvict : 캐시를 삭제할 때 사용
  • @Caching : 여러 캐시 어노테이션을 함께 사용할 때

필요하다면 Redis나 Caffeine 같은 캐시 스토어와 함께 연동도 가능합니다.