https://spring.io/guides/gs/caching/
봄 | 집
코드 클라우드, 모든 클라우드 – 우리가 도와드리겠습니다.
플랫폼에 관계없이 서비스를 연결하고 확장하십시오.
spring.io
오역이 있으면 알려주세요.
소스 코드는 이미 Github에 아주 멋지게 업로드되어 있으므로 필요하지 않지만 핵심 기능에 대한 코드를 읽고 정리할 계획입니다.
전체 파일 소스는 위의 소스 링크를 통해 Github로 이동하여 볼 수 있습니다.
코드마다 설명이 잘 되어 있어서 참고하기 좋았습니다.
@SpringBootApplication 다음을 추가하는 편리한 메모입니다.
- @Configuration: 애플리케이션 컨텍스트에 대한 빈 정의의 소스로 클래스를 표시합니다.
- @EnableAutoConfiguration: 클래스 경로 설정, 기타 빈 및 다양한 속성 설정을 기반으로 빈 추가를 시작하도록 Spring Boot에 지시합니다.
예를 들어 언제 봄 webmvc 클래스 경로에 있는 경우 이 주석은 애플리케이션을 웹 애플리케이션으로 표시하고 다음과 같은 중요한 동작을 활성화합니다.
B. 설정 Dispatcher서블릿. - @ComponentScan: Spring에게 다른 구성 요소, 구성 및 서비스를 찾도록 지시합니다.
com/example 컨트롤러를 찾을 수 있도록 패키지.
너도 하나 필요해 명령줄 실행기 그 분출 도서 목록 다른 인수로 여러 번 호출합니다.
다음 목록(에서 src/main/java/com/example/caching/AppRunner.java) 이 클래스를 보여줍니다.
스프링 부트 참조 문서
이 섹션에서는 Spring Boot를 사용하는 방법에 대해 자세히 설명합니다.
빌드 시스템, 자동 구성, 애플리케이션 실행 방법과 같은 주제를 다룹니다.
또한 몇 가지 Spring Boot 모범 사례도 다룹니다.
특별한 것은 없지만
docs.spring.io
package com.example.caching;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.boot.CommandLineRunner;
import org.springframework.stereotype.Component;
@Component
public class AppRunner implements CommandLineRunner {
private static final Logger logger = LoggerFactory.getLogger(AppRunner.class);
private final BookRepository bookRepository;
public AppRunner(BookRepository bookRepository) {
this.bookRepository = bookRepository;
}
@Override
public void run(String... args) throws Exception {
logger.info(".... Fetching books");
logger.info("isbn-1234 -->" + bookRepository.getByIsbn("isbn-1234"));
logger.info("isbn-4567 -->" + bookRepository.getByIsbn("isbn-4567"));
logger.info("isbn-1234 -->" + bookRepository.getByIsbn("isbn-1234"));
logger.info("isbn-4567 -->" + bookRepository.getByIsbn("isbn-4567"));
logger.info("isbn-1234 -->" + bookRepository.getByIsbn("isbn-1234"));
logger.info("isbn-1234 -->" + bookRepository.getByIsbn("isbn-1234"));
}
}
캐싱을 사용하지 않으면 동일한 요청에 대해 동일한 데이터를 여러 번 가져옵니다.
간단한 주석 처리를 통한 데이터 캐싱
package com.example.caching;
import org.springframework.cache.annotation.Cacheable;
import org.springframework.stereotype.Component;
@Component
public class SimpleBookRepository implements BookRepository {
@Override
@Cacheable("books")
public Book getByIsbn(String isbn) {
simulateSlowService();
return new Book(isbn, "Some book");
}
// Don't do this at home
private void simulateSlowService() {
try {
long time = 3000L;
Thread.sleep(time);
} catch (InterruptedException e) {
throw new IllegalStateException(e);
}
}
}
아주 좋은 CommandLineRunner를 작성하거나 캐싱이 잘 관리되는지 테스트해야 한다고 생각합니다.