스프링 캐시 개념
Spring 3.1부터 시작하여 기존 스프링 애플리케이션에 캐시를 추가하는 투명한 방법이 제공되며 @Transaction과 같이 사용됩니다. 응용 프로그램 수준과 백엔드 스토리지 사이에는 추상화 계층이 있습니다. 이 추상화 계층은 기존 비즈니스 코드에 대한 캐시로 인한 침입을 최소화하기 위해 다양한 플러그 가능한 백엔드 스토리지 (ehcache guava redis)를 캡슐화하도록 설계되었습니다.
Spring의 캐싱 기술은 또한 상당한 유연성을 가지고 있습니다. SPEL (Spring Expression Language)을 사용하여 캐시 키 및 다양한 조건을 정의 할 수있을뿐만 아니라 기본적인 캐시 임시 스토리지 솔루션을 제공하며 EHCache와 같은 주류 전문 캐시와의 통합을 지원합니다.
특성은 다음과 같이 요약됩니다.
디자인 개념
스프링 프레임 워크의 다른 서비스와 마찬가지로 Spring Cache는 먼저 추상화 계층을 제공하며 핵심 추상화는 주로 두 인터페이스에 반영됩니다.
org.springframework.cache.cache
org.springframework.cache.CacheManager
캐시는 캐시 자체를 나타냅니다
Cachemanager는 캐시 등의 처리 및 관리를 나타냅니다. 추상화의 의미는 구현 세부 사항의 차이를 차단하고 확장 성을 제공하는 것입니다. 이 캐시 추상화 레이어는 캐시 사용 및 캐시의 백엔드 스토리지를 분해하여 향후 백엔드 스토리지를 쉽게 교체 할 수 있도록합니다.
세 단계로 스프링 캐시 사용 :
캐시 선언
@Cachable ( "Books") Public Book FindBook (ISBN ISBN) {...} 사용법은 매우 간단합니다. 메소드에 @Cachable 및 기타 주석을 추가하여 메소드 결과를 캐시합니다.
메소드가 호출되면 먼저 메소드에 대한 캐시에 동일한 매개 변수에 대한 호출이 있는지 확인하십시오. 그렇다면 캐시에서 쿼리를하고 결과를 반환하십시오. 그렇지 않은 경우 특정 메소드 로직을 실행하고 결과를 캐시로 캐시하십시오. 물론,이 일련의 논리는 발신자에게 투명합니다. 다른 캐시 작업의 메모는 다음과 같습니다 (자세한 내용은 공식 문서 참조) :
스프링 캐시 지원을 켜십시오
<캐시 : 주석 구동 />
또는 주석 @EnableCaching 메소드를 사용하십시오
캐시 백엔드 스토리지를 구성하십시오
Spring Cache는 몇 가지 내장 백엔드 스토리지 구현을 제공합니다. 다음은 CacheManager의 특정 구현입니다.
또한 Spring Data는 두 캐시 관리자를 제공합니다.
Memcached 또는 Redis와 같은 분산 캐시를 사용하는 경우 캐시 및 캐시 메너를 직접 구현하여 컨텍스트에서 선언 할 수 있습니다. 여러 다른 캐시 구현이 필요한 경우, 다양한 캐시 메나기를 조합 모드로 함께 캡슐화 할 수 있습니다.
캐시 된 키는 어떻게 생성됩니까?
우리는 캐시의 저장 방법이 일반적으로 핵심 값이라는 것을 알고 있습니다. 스프링 캐시에서 키 세트는 어떻습니까? 여기서 우리는 주요 생성 전략을 담당하는 KeyGenerator를 소개해야하며 기본값은 SimplekeyGenerator를 사용하는 것입니다.
주문한 매개 변수 배열의 해시 값임을 알 수 있습니다. 물론 사용자는 주요 생성 전략을 사용자 정의 할 수 있습니다.
스프링 캐시 구현
위는 스프링 캐시의 일반적인 사용으로 스프링 구현 방법을 보여줍니다.
스프링 소스 코드를 학습 할 때는 기억해야 할 두 가지가 있습니다.
이것을 기억하고 봄에 일부 구성 요소의 구현 및 런타임 메커니즘을 이해하는 것이 더 쉽습니다.
스프링 캐시도 예외는 아닙니다. 전형적인 Spring AOP 구현입니다. 봄에 AOP는 단순히 프록시로 이해 될 수 있습니다 (Sagej 제외). @Cachable 메소드 클래스가 프록시되고 프록시에서는 캐시 된 쿼리 및 설정 작업이 구현되었다고 선언합니다.
캐시 인프라 생성
이전 기사 (Spring AOP 모듈의 개요)는 Spring AOP의 생성 프로세스가 본질적으로 BeanPostProcessor를 구현하고, Bean을 생성하는 과정에서 프록시를 만들고, 프록시에 Bean에 적용되는 모든 고문을 바인딩하고 궁극적으로 컨테이너에 노출시키는 것이라는 사실에 대해 이야기했습니다.
Spring Advisor Advice Pointcut에서 AOP 마스터의 몇 가지 주요 개념
조언 = 단면 차단에서 삽입 행동
PointCut = 섹션의 PointCut
어드바이저 = 조언 + 포인트 컷
스프링 캐시에는 다른 AOP와 유사한 프로세스가 있습니다
캐시 프록시를 만듭니다
캐시의 인터셉트 라인
스프링 캐시에서 생성 된 캐시 프록시 객체는 CacheProxyFactoryBean Factory 클래스를 사용합니다. 일반적으로, 스프링에서 표준 프록시의 생성은 근접 비정을 기반으로합니다. 여기서는 캐시 로직을보다 편리하게 처리하기 위해 Spring은 CacheproxyFactoryBean을 도입하여 캐시 관련 프록시를 구체적으로 나타냅니다. 캐시 프록시는 싱글 톤 대상 객체와 프록시 대상 객체에서 구현 한 모든 인터페이스를 프록시 할 수 있습니다.
보시다시피, CacheproxyFactoryBean에서 중요한 속성은 캐시 인터셉터입니다. 이 클래스는 Methodinterceptor의 구현 클래스입니다. 이 클래스의 책임은 대상 객체 대상 방법에 대한 특정 캐시 작업을 수행하는 것입니다. 이는 위에서 언급 한 조언의 책임입니다.
계속해서, Execute Return의 방법은 부모 클래스 캐시 - 스펙터 지원의 방법입니다.
이 방법에서 우리는 마침내 작동 캐시의 최종 논리를 찾습니다.
요약
위는이 기사의 전체 내용입니다. 이 기사의 내용에 모든 사람의 연구 나 작업에 대한 특정 참조 가치가 있기를 바랍니다. 궁금한 점이 있으면 의사 소통을 위해 메시지를 남길 수 있습니다. Wulin.com을 지원 해주셔서 감사합니다.