카페인 및 스프링 부팅 통합
카페인은 Java 8을 사용하여 Guava 캐시의 다시 작성된 버전으로 Spring Boot 2.0에서 Guava를 대체합니다. 카페인이 나타나면 CaffeineCacheManager가 자동으로 구성됩니다. Spring.cache.cache-names 속성을 사용하여 시작시 캐시를 생성하고 다음 구성으로 사용자 정의 할 수 있습니다.
예를 들어, 다음 구성은 최대 500 개와 생존 시간 10 분의 FOO 및 막대 캐시를 만듭니다.
spring.cache.cache-names = foo, barspring.cache.caffeine.spec = maximumSize = 500, expirtAraccess = 600s
또한 com.github.benmanes.caffeine.cache.cacheloader가 정의되면 CaffeineCacheManager와 자동으로 연결됩니다. Cacheloader는 캐시 관리자가 관리하는 모든 캐시를 연결하므로 Cacheloader <Object, Object>로 정의되어야하며 자동 구성은 모든 일반 유형을 무시합니다.
종속성을 소개합니다
<pectionency> <groupid> org.springframework.boot </groupid> <artifactid> 스프링-부트 스타터-스프링> </eppendency> <pectionement> <groupid> com.github.ben-manes.caffeine </groupid> <artifactid> caffeine </artifactid> </version> 2.6.0.0.0.0.0.0.0.0.0
캐시 지원을 활성화합니다
@enablecaching 주석을 사용하여 캐시 지원을 활성화하십시오
@springbootApplication@enableCaching // 캐시 활성화, 지정된 공개 클래스 SpringBootStudentCacheCecfeineApplication {public static void main (String [] args) {springApplication.run (SpringBootStudentCacheCefeIneApplication.class, args); }}구성 파일
최대 용량, 만료 시간 등과 같은 캐시에 대한 특수 구성이 추가되었습니다.
spring.cache.cache-names = peoplespring.cache.caffeine.spec = initialcapacity = 50, maximsize = 500, expirterwrite = 10s, refreshfterwrite = 5s
CompertOFTERWRITE 구성을 사용하는 경우 다음과 같은 CachEloader도 지정해야합니다.
/** *이 Bean은 지정되어야하며 CrosphterWrite = 5의 구성 속성이 적용됩니다 * * @return */ @beanpublic cacheloader <객체, object> cacheloader () {cacheloader <object, object> cacheloader = new Cacheloader <개체, 개체> () {@overrider public load (object key) {return shrows exception {return null; } //이 메소드를 다시 작성하고 OldValue 값을 다시 반환 한 다음 Cache @override public 객체 reload (개체 키, 개체 OldValue)를 예외 {return OldValue; }}; Cacheloader 반환;}카페인 구성 지침 :
알아채다:
샘플 코드
/** * @author yuhao.wang */ @servicepublic class personerviceimpl은 personervice {private static final logger = loggerfactory.getLogger (personerviceImpl.class); @autowired Personrepository Personrepository; @override @cacheput (value = "people", key = "#person.id") 공개 사람 저장 (사람) {person p = personrepository.save (person); logger.info ( "is id id, key :" + p.getid () + "data cached"); 반환 p; } @override @cacheevict (value = "people") // 2 public void remove (long id) {logger.info ( "id, key" + id + ""가있는 데이터 캐시 제거); // 실제 삭제 작업은 여기에서 수행되지 않습니다} /** * 캐시 가능 * 값 : 키의 접두사를 캐시합니다. * 키 : 캐시 키 접미사. * 동기화 : 캐시가 만료되면 설정하고 데이터베이스를 요청하기 위해 하나의 요청 만 배치해야하며 다른 요청이 차단되고 기본값은 False입니다. */ @override @Cachide (value = "people", key = "#person.id", sync = true) 공개 사람 findone (person person, string a, string [] b, list <long> c) {person p = personrepository.findone (person.getid ()); logger.info ( "id, key :" + p.getId () + "데이터가 캐시되었습니다"); 반환 p; } @override @Cachible (value = "people1") // 3 공공 인물 findone1 () {person p = personrepository.findone (2l); logger.info ( "id의 경우 키는" + p.getid () + "데이터가 캐시되었습니다"); 반환 p; } @override @Cachible (value = "people2") // 3 공공 사람 findone2 (Person Person) {person p = personrepository.findone (person.getid ()); logger.info ( "id의 경우 키는" + p.getid () + "데이터가 캐시되었습니다"); 반환 p; }} 소스 코드 : https://github.com/wyh-spring-ecosystem-student/spring-boot-student/tree/releases
위는이 기사의 모든 내용입니다. 모든 사람의 학습에 도움이되기를 바랍니다. 모든 사람이 wulin.com을 더 지원하기를 바랍니다.