web
Spring Boot - Cache
허원철
2016. 12. 5. 08:25
이번 글은 Cache 에 대한 글 입니다.
What..?
- 위 내용과 같이 캐시라는 것을 spring boot 에서 사용할 수 있습니다. 예를 들면, DB 데이터를 반환하고자할 때 한번에 DB 커넥션으로 캐시에 쌓았다가 두번째 부터 캐시에 보관된 데이터를 반환하는 것 입니다.
When..?
- 일반적으로는 사용자가 등록하는 데이터가 아닌, 주로 관리자에 의해 반복적으로 제공되는 데이터를 사용자에게 보여주고 할 때, 사용된다고 합니다.
How..!
1. Gradle 설정
2. Application 설정
3. Model & Component 설정
4. Controller 설정
5. Test & Result
1. Gradle 설정
- Cache 사용을 위해 라이브리를 추가해줍니다. (오늘부터는.. Test 를 이용합니다...)
dependencies {
compile('org.springframework.boot:spring-boot-starter-web')
compile('org.springframework.boot:spring-boot-starter-cache')
testCompile('org.springframework.boot:spring-boot-starter-test')
}
2. Application 설정
3. Model & Component 설정
- 우리는 Controller에서 getByIsbn 와 refresh를 호출할 것 입니다.
@Cacheable
- getByIsbn을 호출 하면 약 3초간 딜레이가 걸리고 Book 객체를 반환합니다.
- value는 캐시를 저장하고자 하는 이름입니다.
- key는 인자값으로 캐시에 키를 잡아 키를 통해 데이터를 가져올 것 입니다.
@CacheEvict
- refresh를 호출하면 value에 해당하는 캐시에 담아 있던 key값을 지웁니다.
4. Controller 설정
- localhost:8080/ 와 localhost:8080/clear 를 이용해 테스트를 진행합니다.
5. Test & Result
- 시간 체크를 위해 @Before 와 @After 를 추가 해줍니다.
- 결과를 보고 말을 하자면
① isbn = a 인 값이 처음 호출 됩니다.( 캐시에 저장 )
② isbn = a 를 다시 호출 하게 되면, 캐시에 저장된 데이터를 가져 옵니다.
③ isbn = b 인 값이 처음 호출 됩니다.( 캐시에 저장 )
④ isbn = a 를 다시 호출 하게 되면, 캐시에 저장된 데이터를 가져 옵니다.
⑤ isbn = a 인 값을 캐시에서 삭제 합니다 ( 캐시에서 삭제 )
⑥ isbn = a 인 값을 다시 호출 됩니다.( 캐시에 저장 )