springboot 캐 시 의 GuavaCacheManager
11251 단어 2.5springboot캐 시
참고 로 GuavaCacheManager 의 데이터 구 조 를 살 펴 보면 GuavaCacheManager 는 일종 의
Map>
데이터 구조 와 유사 하 다. GuavaCacheManager 에는 여러 개의 cache 가 있 고 모든 cache 는 Map 과 유사 한 구조 로 유일한 key 와 value 가 있다.본 논문 의 사례 는 프로젝트 가 시 작 될 때 Person 표 의 데 이 터 를 모두 GuavaCacheManager 에 저장 하고 데 이 터 를 조회 할 때 GuavaCacheManager 에서 가 져 오 며 GuavaCacheManager 에 없 으 면 데이터 베이스 에서 가 져 오 는 것 이다.
자, 쓸데없는 말 은 그만 하고 주요 코드 가 실현 되 는 것 을 보 세 요.
1. 의존 도 추가
<dependency>
<groupId>org.springframework.bootgroupId>
<artifactId>spring-boot-starter-cacheartifactId>
dependency>
<dependency>
<groupId>com.google.guavagroupId>
<artifactId>guavaartifactId>
<version>18.0version>
dependency>
2. CacheConfig 추가
새 CacheConfig. java
서비스 시작 후 person 표 의 데 이 터 를 GuavaCacheManager 에 불 러 옵 니 다.
package com.us.example.config;
import com.us.example.bean.Person;
import com.us.example.service.DemoService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cache.Cache;
import org.springframework.cache.CacheManager;
import org.springframework.cache.guava.GuavaCacheManager;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import java.util.ArrayList;
import java.util.List;
/**
* Created by yangyibo on 17/3/2.
*/
@Configuration
public class CacheConfig {
@Autowired
private DemoService demoService;
@Bean
public CacheManager getCacheManager() {
List personList = demoService.findAll();
//
List cacheNames = new ArrayList();
GuavaCacheManager cacheManager = new GuavaCacheManager();
// 500 , 30
cacheManager.setCacheSpecification("maximumSize=500,expireAfterWrite=30m");
//GuavaCacheManager Map> map =new HashMap<>();
//
personList.stream().forEach(person -> {
// person id cacheName
String cacheName=person.getId().toString();
if(cacheManager.getCache(cacheName)==null){
// person ,
cacheNames.add(cacheName);
cacheManager.setCacheNames(cacheNames);
}
Cache cache = cacheManager.getCache(cacheName);
// person id key person value
cache.put(person.getId(),person);
System.out.println(" ID "+cacheName+ " person ");
});
return cacheManager;
}
}
3. service
그리고 조회 할 때 캐 시 를 먼저 조회 하고 캐 시가 없 으 면 데이터 베 이 스 를 조회 합 니 다.
package com.us.example.service;
import com.us.example.bean.Person;
import com.us.example.dao.PersonRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cache.Cache;
import org.springframework.cache.CacheManager;
import org.springframework.stereotype.Service;
/**
* Created by yangyibo on 17/3/2.
*/
@Service
public class PersonService {
@Autowired
CacheManager cacheManager;
@Autowired
private PersonRepository personRepository;
public Person findOne(Long id) {
Person person = getCache(id, cacheManager);
if (person != null) {
System.out.println(" :" + person.toString());
} else {
person = personRepository.findOne(id);
System.out.println(" :" + person.toString());
}
return person;
}
public Person save(Person person) {
Person p = personRepository.save(person);
return p;
}
public Person getCache(Long id, CacheManager cacheManager) {
// Person person=(Person) cacheManager.getCache(id.toString()).get(id).get();
Cache cache = cacheManager.getCache(id.toString());
Cache.ValueWrapper valueWrapper = cache.get(id);
Person person = (Person) valueWrapper.get();
return person;
}
}
: Person findAll() findOne service 。
service springboot bean , :
Injection of autowired dependencies failed
원본 코드:https://github.com/527515025/springBoot
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
"cvc-complex-type.2.4.a: Invalid content was found starting with element 'init-param'. One of '{"http://java.sun.com/xml/ns/javaee":run-as, "http://java.sun.com/ xml/ns/javaee":security-role-ref}' is더 읽 기 프로젝트 는 Spring MVC 를 사 용 했 습 니 다.이전에 사 용 했 던 웹.xml 는 2.4 버 전 을 사 용 했 습 니 다.오늘 은 2.5 버 전 으로 업그레이드 하 였 으 나 업그레이드 후 sp...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.