Đây là một ví dụ đầy đủ về cách thiết lập Guava Cache trong Spring. Tôi đã sử dụng Guava thay vì Ehcache vì nó có trọng lượng nhẹ hơn một chút và cấu hình có vẻ dễ hiểu hơn đối với tôi.
Nhập phụ thuộc Maven
Thêm các phần phụ thuộc này vào tệp maven pom của bạn và chạy sạch và các gói. Các tệp này là các phương thức trợ giúp Guava dep và Spring để sử dụng trong CacheBuilder.
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>18.0</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context-support</artifactId>
<version>4.1.7.RELEASE</version>
</dependency>
Định cấu hình bộ nhớ cache
Bạn cần tạo tệp CacheConfig để cấu hình bộ đệm bằng cấu hình Java.
@Configuration
@EnableCaching
public class CacheConfig {
public final static String CACHE_ONE = "cacheOne";
public final static String CACHE_TWO = "cacheTwo";
@Bean
public Cache cacheOne() {
return new GuavaCache(CACHE_ONE, CacheBuilder.newBuilder()
.expireAfterWrite(60, TimeUnit.MINUTES)
.build());
}
@Bean
public Cache cacheTwo() {
return new GuavaCache(CACHE_TWO, CacheBuilder.newBuilder()
.expireAfterWrite(60, TimeUnit.SECONDS)
.build());
}
}
Chú thích phương thức được lưu vào bộ nhớ đệm
Thêm chú thích @Cacheable và nhập tên bộ nhớ cache.
@Service
public class CachedService extends WebServiceGatewaySupport implements CachedService {
@Inject
private RestTemplate restTemplate;
@Cacheable(CacheConfig.CACHE_ONE)
public String getCached() {
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_JSON);
HttpEntity<String> reqEntity = new HttpEntity<>("url", headers);
ResponseEntity<String> response;
String url = "url";
response = restTemplate.exchange(
url,
HttpMethod.GET, reqEntity, String.class);
return response.getBody();
}
}
Bạn có thể xem một ví dụ đầy đủ hơn ở đây với ảnh chụp màn hình có chú thích: Guava Cache in Spring