Berikut adalah contoh lengkap menyiapkan Guava Cache di Spring. Saya menggunakan Guava daripada Ehcache karena bobotnya sedikit lebih ringan dan konfigurasinya tampak lebih mudah bagi saya.
Impor Dependensi Maven
Tambahkan dependensi ini ke file pom maven Anda dan jalankan clean and packages. File ini adalah metode pembantu Guava dep dan Spring untuk digunakan di 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>
Konfigurasikan Cache
Anda perlu membuat file CacheConfig untuk mengkonfigurasi cache menggunakan konfigurasi 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());
}
}
Beri anotasi metode yang akan disimpan dalam cache
Tambahkan anotasi @Cacheable dan teruskan nama 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();
}
}
Anda dapat melihat contoh yang lebih lengkap di sini dengan screenshot beranotasi: Guava Cache in Spring