Ответ
Опыт работы с Spring Cache включает настройку и использование абстракции кэширования для оптимизации производительности приложений.
Основные возможности и практики:
-
Декларативное кэширование с помощью аннотаций:
@Cacheable– кэширует результат метода.@CachePut– обновляет кэш (например, при сохранении).@CacheEvict– удаляет данные из кэша (например, при удалении).@Caching– группировка нескольких операций с кэшем.
-
Интеграция с различными провайдерами: Ehcache, Caffeine, Redis, Hazelcast.
-
Настройка ключей кэширования (SpEL), условий и TTL.
Пример использования в Spring Boot сервисе:
@Service
public class ProductService {
@Cacheable(value = "products", key = "#id", unless = "#result == null")
public Product getProductById(Long id) {
// Дорогой вызов к БД выполняется только при промахе кэша
return productRepository.findById(id).orElse(null);
}
@CachePut(value = "products", key = "#product.id")
public Product updateProduct(Product product) {
// Обновляем БД и кэш одновременно
return productRepository.save(product);
}
@CacheEvict(value = "products", key = "#id")
public void deleteProduct(Long id) {
productRepository.deleteById(id);
}
}
Конфигурация в application.yml для использования Caffeine:
spring:
cache:
type: caffeine
caffeine:
spec: maximumSize=500, expireAfterWrite=10m
Почему это важно: Spring Cache абстрагирует работу с кэшем, позволяя легко менять провайдера и применять кэширование без изменения бизнес-логики, что значительно ускоряет работу приложения при повторяющихся запросах.