Перейти к основному содержимому

Spring Boot и Caffeine Cache

· 3 мин. чтения

1. Обзор

Caffeine cache — это высокопроизводительная библиотека кеша для Java. В этом коротком руководстве мы увидим, как использовать его с Spring Boot .

2. Зависимости

Чтобы начать работу с Caffeine и Spring Boot, мы сначала добавляем зависимости spring-boot-starter-cache и caffeine : [](https://search.maven.org/artifact/com.github.ben-manes.caffeine/caffeine)

<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-cache</artifactId>
</dependency>
<dependency>
<groupId>com.github.ben-manes.caffeine</groupId>
<artifactId>caffeine</artifactId>
</dependency>
</dependencies>

Они импортируют базовую поддержку кэширования Spring вместе с библиотекой Caffeine.

3. Конфигурация

Теперь нам нужно настроить кэширование в нашем приложении Spring Boot.

Во-первых, мы создаем боб Caffeine . Это основная конфигурация, которая будет управлять поведением кэширования, таким как истечение срока действия, ограничения размера кэша и т . д .:

@Bean
public Caffeine caffeineConfig() {
return Caffeine.newBuilder().expireAfterWrite(60, TimeUnit.MINUTES);
}

Далее нам нужно создать еще один компонент, используя интерфейс Spring CacheManager . Caffeine предоставляет свою реализацию этого интерфейса, для которой требуется объект Caffeine , который мы создали выше:

@Bean
public CacheManager cacheManager(Caffeine caffeine) {
CaffeineCacheManager caffeineCacheManager = new CaffeineCacheManager();
caffeineCacheManager.setCaffeine(caffeine);
return caffeineCacheManager;
}

Наконец, нам нужно включить кэширование в Spring Boot с помощью аннотации @EnableCaching . Его можно добавить в любой класс @Configuration в приложении.

4. Примеры

Когда кэширование включено и настроено для использования Caffeine, давайте рассмотрим несколько примеров того, как мы можем использовать кэширование в нашем приложении Spring Boot.

Основной способ использования кэширования в Spring Boot — это аннотация @Cacheable . Эта аннотация работает с любым методом компонента Spring (или даже со всем классом). Он указывает зарегистрированному диспетчеру кеша сохранить результат вызова метода в кеше.

Типичное использование внутри классов обслуживания:

@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 для ключа кеша.

Наконец, поскольку диспетчер кеша сам по себе является bean-компонентом Spring, мы также можем автоматически связать его с любым другим bean-компонентом и работать с ним напрямую :

@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 для использования кеша Caffeine, а также несколько примеров того, как использовать кеширование в нашем приложении.

И, конечно же, все примеры кода находятся на GitHub .