นี่คือตัวอย่างทั้งหมดของการตั้งค่า Guava Cache ใน Spring ฉันใช้ Guava มากกว่า Ehcache เพราะน้ำหนักเบากว่าเล็กน้อยและ config ดูเหมือนตรงกับฉันมากกว่า
นำเข้าการพึ่งพา Maven
เพิ่มการอ้างอิงเหล่านี้ในไฟล์ maven pom ของคุณและรัน clean and package ไฟล์เหล่านี้เป็นวิธี Guava dep และ Spring helper สำหรับใช้ใน 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>
กำหนดค่าแคช
คุณต้องสร้างไฟล์ CacheConfig เพื่อกำหนดค่าแคชโดยใช้ Java config
@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());
}
}
ใส่คำอธิบายประกอบวิธีที่จะแคช
เพิ่มคำอธิบายประกอบ @Cacheable และส่งในชื่อแคช
@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();
}
}
คุณสามารถดูตัวอย่างที่สมบูรณ์ยิ่งขึ้นได้ที่นี่พร้อมด้วยภาพหน้าจอที่มีคำอธิบายประกอบ: Guava Cache ใน Spring