Автор оригинала: Michael Pratt.
1. Обзор
Caffeine cache-это высокопроизводительная библиотека кэша для Java. В этом коротком уроке мы увидим, как использовать его с Spring Boot .
2. Зависимости
Чтобы начать работу с кофеином и Spring Boot, мы сначала добавим spring-boot-starter-cache | и кофеин зависимости:
org.springframework.boot spring-boot-starter-cache com.github.ben-manes.caffeine caffeine
Они импортируют базовую поддержку кэширования Spring вместе с библиотекой кофеина.
3. Конфигурация
Теперь нам нужно настроить кэширование в нашем приложении Spring Boot.
Во-первых, мы создаем Кофеин боб. Это основная конфигурация, которая будет управлять поведением кэширования, таким как истечение срока действия, ограничения размера кэша и многое другое :
@Bean
public Caffeine caffeineConfig() {
return Caffeine.newBuilder().expireAfterWrite(60, TimeUnit.MINUTES);
}Затем нам нужно создать еще один компонент, используя интерфейс Spring Cache Manager . Кофеин обеспечивает реализацию этого интерфейса, для чего требуется объект Кофеин , который мы создали выше:
@Bean
public CacheManager cacheManager(Caffeine caffeine) {
CaffeineCacheManager caffeineCacheManager = new CaffeineCacheManager();
caffeineCacheManager.setCaffeine(caffeine);
return caffeineCacheManager;
}Наконец, нам нужно включить кэширование в Spring Boot с помощью аннотации @EnableCaching . Это может быть добавлено в любой класс @Configuration в приложении.
4. Примеры
Если кэширование включено и настроено на использование кофеина, давайте рассмотрим несколько примеров того, как мы можем использовать кэширование в нашем приложении Spring Boot.
Основной способ использования кэширования в Spring Boot-это использование @Cacheable аннотации . Эта аннотация работает с любым методом Spring bean (или даже со всем классом). Он дает указание зарегистрированному менеджеру кэша сохранить результат вызова метода в кэше.
Типичное использование-внутри классов обслуживания:
@Service
public class AddressService {
@Cacheable
public AddressDTO getAddress(long customerId) {
// lookup and return result
}
}Использование аннотации @Cacheable без параметров заставит Spring использовать имена по умолчанию как для кэша, так и для ключа кэша.
Мы можем переопределить оба этих поведения, добавив некоторые параметры в аннотацию:
@Service
public class AddressService {
@Cacheable(value = "address_cache", key = "customerId")
public AddressDTO getAddress(long customerId) {
// lookup and return result
}
}В приведенном выше примере Spring предлагает использовать кэш с именем address_cache и аргумент CustomerID для ключа кэша.
Наконец, поскольку менеджер кэша сам по себе является компонентом Spring, мы также можем автоматически подключить его к любому другому компоненту и работать с ним напрямую :
@Service
public class AddressService {
@Autowired
CacheManager cacheManager;
public AddressDTO getAddress(long customerId) {
if(cacheManager.containsKey(customerId)) {
return cacheManager.get(customerId);
}
// lookup address, cache result, and return it
}
}5. Заключение
В этом руководстве мы рассмотрели, как настроить Spring Boot для использования кэша кофеина, а также некоторые примеры использования кэширования в нашем приложении.
И, конечно же, все примеры кода находятся на GitHub .