⚙️ 개발/Spring
@Cacheable
지구용사
2024. 4. 9. 14:47
스프링에서 AOP 기반으로 캐시가 작동하며 어노테이션으로 설정할 수 있도록 간편하게 제공한다.
그중 하나가 @Cacheable 어노테이션이다.
🔎 캐시
자주 사용하는 데이터를 저장하는 공간을 의미한다. 요청이 있을 때마다 생성 및 응답하기 보다는 미리 생성된 데이터를 저장해놓고 요청올 때마다 로직을 거치지않고 반환해주는 것이 시스템 성능을 향상할 수 있다.
@Cacheable은 캐시 생성 및 전달을 담당한다. 캐시에 데이터가 없을 경우 기존의 로직을 실행 후 캐시에 데이터를 추가하고, 캐시에 데이터가 있으면 캐시의 데이터를 반환한다.
@Cacheable("member")
public Member cacheable(String value) {
System.out.println("cacheable 실행");
return member;
}
1. 파라미터 value의 값으로 'wow'를 입력들어온다.
2. 캐싱된 데이터가 없기에 cacheable() 메소드가 실행된다.
3. sout 출력된다.
4. 반환값으로 member가 캐시 저장소에 저장된다.
5. 시간이 흐른 후 파라미터 value의 값으로 'wow'가 입력들어왔다.
6. 캐싱되어있기에 캐시 저장소에서 member가 반환되고 메소드는 실행되지 않아 sout 출력은 없다.