К основному содержанию
скилл CX Codex

spring-boot-cache — скилл для Claude Code: что делает и как установить

Помогает настроить кэширование в Spring Boot через Caffeine, Redis или Ehcache. Пригодится для аннотирования сервисов, задания TTL и поиска причин промахов кэша.

Установить в Claude Code · Через Skills CLI (Vercel) Все способы и платформы ↓
npx skills add giuseppe-trisciuoglio/developer-kit --skill spring-boot-cache -a claude-code
Открыть на GitHub

Что делает spring-boot-cache

Скилл предлагает шаблоны для работы с абстракцией кэша в Spring Boot. Он помогает подключить провайдеры вроде Caffeine, Redis или Ehcache, добавить нужные зависимости в сборку и включить конфигурацию через @EnableCaching. Для методов сервисов задаются аннотации @Cacheable, @CachePut и @CacheEvict.

Скилл учит формировать ключи через SpEL и отсекать лишние записи условиями condition и unless. Работу проверяют через метрики Actuator и конечную точку /actuator/caches. Если вызывать метод внутри того же класса, кэш перестаёт работать из-за обхода прокси Spring. Это частая ошибка при отладке.

Внутри собраны рекомендации по согласованию сброса данных с границами транзакций. Нельзя смешивать аннотации Spring и JCache на одном методе, иначе поведение станет непредсказуемым. При совмещении Caffeine и Redis для многоуровневого кэша придётся настраивать каналы pub-sub для инвалидации.

Какие задачи решает

  • подключить провайдеры Caffeine, Redis или Ehcache в Spring Boot
  • разметить методы сервисов аннотациями @Cacheable, @CachePut и @CacheEvict
  • задать время жизни записей и правила сброса устаревших данных
  • отследить статистику попаданий и промахов через метрики Actuator
  • устранить пропуск кэша из-за вызова метода в обход прокси

Примеры запросов агенту

  • Настрой кэширование пользователей в UserService через Caffeine с проверкой unless
  • Добавь Redis как кэш-провайдер в Spring Boot с временем жизни записей и очисткой по @CacheEvict
  • Почему метод с @Cacheable постоянно даёт промах кэша при вызове из того же класса?

Как установить spring-boot-cache

1Через Skills CLI (Vercel)

npx skills add giuseppe-trisciuoglio/developer-kit --skill spring-boot-cache -a claude-code

2Вручную: положить файлы

~/.claude/skills/spring-boot-cache/SKILL.md

Папка скилла целиком; для одного проекта — .claude/skills/spring-boot-cache/

По шагам, с командами для каждой платформы: Как установить скилл в Claude Code: пять способов

Вопросы о spring-boot-cache

Как установить spring-boot-cache в Claude Code?

Выполните в терминале команду npx skills add giuseppe-trisciuoglio/developer-kit --skill spring-boot-cache -a claude-code. Агент добавит скилл в проект и откроет к нему доступ в сессиях кодинга.

Какие провайдеры кэша поддерживает скилл?

Скилл содержит инструкции для Caffeine, Redis и Ehcache. Для каждого варианта описаны необходимые зависимости и параметры конфигурации TTL.

Почему метод с @Cacheable может не сохранять данные в кэш?

Spring использует прокси, поэтому вызов метода внутри того же класса идёт в обход кэша. Также важно проверить наличие аннотации @EnableCaching в конфигурации и публичный модификатор метода.

Исходный текст

SKILL.md · MIT
---
name: spring-boot-cache
description: "Provides patterns for implementing Spring Boot caching: configures Redis/Caffeine/EhCache providers with TTL and eviction policies, applies @Cacheable/@CacheEvict/@CachePut annotations, validates cache hit/miss behavior, and exposes metrics via Actuator. Use when adding caching to Spring Boot services, configuring cache expiration, evicting stale data, or diagnosing cache misses."
allowed-tools: Read, Write, Bash
---

# Spring Boot Cache Abstraction

## Overview

6-step workflow for enabling cache abstraction, configuring providers (Caffeine,
Redis, Ehcache), annotating service methods, and validating behavior in
Spring Boot 3.5+ applications. Apply `@Cacheable` for reads, `@CachePut` for
writes, `@CacheEvict` for deletions. Configure TTL/eviction policies and expose
metrics via Actuator.

## When to Use

- Add `@Cacheable`, `@CachePut`, or `@CacheEvict` to service methods.
- Configure Caffeine, Redis, or Ehcache with TTL and capacity policies.
- Implement eviction strategies for stale data.
- Diagnose cache misses or invalidation issues.
- Expose hit/miss metrics via Actuator or Micrometer.

## Instructions

1. **Add dependencies** — `spring-boot-starter-cache` plus a provider:
   - Caffeine: `caffeine` starter
   - Redis: `spring-boot-starter-data-redis`
   - Ehcache: `ehcache` starter

2. **Enable caching** — annotate a `@Configuration` class with `@EnableCaching`
   and define a `CacheManager` bean.

3. **Annotate methods** — `@Cacheable` for reads, `@CachePut` for writes,
   `@CacheEvict` for deletions.

4. **Configure TTL/eviction** — set `spring.cache.caffeine.spec`,
   `spring.cache.redis.time-to-live`, or `spring.cache.ehcache.config`.

5. **Shape keys** — use SpEL in `key` attributes; guard with
   `condition`/`unless` for selective caching.

6. **Validate setup** — run integration test to confirm cache hit on second
   call; check `GET /actuator/caches` to verify cache manager registration;
   query `GET /actuator/metrics/cache.gets` for hit/miss ratios.

## Examples

### Example 1: Basic `@Cacheable` Usage

```java
@Service
@CacheConfig(cacheNames = "users")
class UserService {

    @Cacheable(key = "#id", unless = "#result == null")
    User findUser(Long id) { ... }
}
```

```
First call → cache miss, repository invoked
Second call → cache hit, repository skipped
```

### Example 2: Conditional Caching with SpEL

```java
@Cacheable(value = "products", key = "#id", condition = "#price > 100")
public Product getProduct(Long id, BigDecimal price) { ... }

// Only expensive products are cached
```

### Example 3: Cache Eviction

```java
@CacheEvict(value = "users", key = "#id")
public void deleteUser(Long id) { ... }
```

For progressive scenarios (basic product cache, multilevel eviction, Redis
integration), load [`references/cache-examples.md`](references/cache-examples.md).

## Advanced Options

- Use JCache annotations (`@CacheResult`, `@CacheRemove`) for providers favoring
  JSR-107 interoperability; avoid mixing with Spring annotations on the same method.
- Cache reactive return types (`Mono`, `Flux`) or `CompletableFuture` values.
- Apply HTTP `CacheControl` headers when exposing cached responses via REST.
- Schedule periodic eviction with `@Scheduled` for time-bound caches.
- Create a `CacheManagementService` for programmatic `cacheManager.getCache(name)`.

## Troubleshooting

If cache misses persist after adding `@Cacheable`:

1. Verify `@EnableCaching` is present on a `@Configuration` class.
2. Confirm the method is public and called from outside the class (Spring uses
   proxies; self-invocation bypasses the cache).
3. Validate SpEL key expressions resolve correctly.
4. Confirm the cache manager bean is registered as `cacheManager` or explicitly
   referenced via `cacheManager = "myCacheManager"`.

## References

- [`references/spring-framework-cache-docs.md`](references/spring-framework-cache-docs.md):
  curated excerpts from Spring Framework Reference Guide.
- [`references/spring-cache-doc-snippet.md`](references/spring-cache-doc-snippet.md):
  narrative overview from Spring documentation.
- [`references/cache-core-reference.md`](references/cache-core-reference.md):
  annotation parameters, dependency matrices, property catalogs.
- [`references/cache-examples.md`](references/cache-examples.md):
  end-to-end examples with tests.

## Best Practices

- Prefer constructor injection and immutable DTOs for cache entries.
- Separate cache names per aggregate (`users`, `orders`) to simplify eviction.
- Log cache hits/misses only at debug; push metrics via Micrometer.
- Tune TTLs based on data staleness tolerance; document rationale in code.
- Guard caches storing PII or credentials with encryption or avoid caching.
- Align cache eviction with transactional boundaries to prevent dirty reads.

## Constraints and Warnings

- Avoid caching mutable entities that depend on open persistence contexts.
- Do not mix Spring cache annotations with JCache annotations on the same method.
- Validate serialization compatibility when caching across service instances.
- Monitor memory footprint to prevent OOM with in-memory stores.
- Caffeine + Redis multi-level caches require publish/subscribe invalidation channels.

## Related Skills

- [`../spring-boot-rest-api-standards`](../spring-boot-rest-api-standards/SKILL.md)
- [`../spring-boot-test-patterns`](../spring-boot-test-patterns/SKILL.md)
- [`../unit-test-caching`](../unit-test-caching/SKILL.md)

© giuseppe-trisciuoglio · MIT · giuseppe-trisciuoglio/developer-kit

Похожие скиллы

Всё по теме «Бэкенд и API» →
create-spring-boot-java-project официальный github Создаёт каркас Spring Boot на Java с Maven, базами данных и Docker Compose. Подходит для старта API, которому нужны PostgreSQL, Redis и MongoDB. 9 516установок create-spring-boot-kotlin-project официальный github Скилл создаёт каркас Spring Boot на Kotlin с Gradle и настраивает PostgreSQL, Redis и MongoDB. Подойдёт, если нужен стартовый проект с реактивными зависимостями и тестами. 8 700установок java-spring-boot pluginagentmarketplace Скилл помогает создавать бэкенд на Spring Boot 3: настраивать REST API, аутентификацию через Spring Security, доступ к базам через Spring Data и мониторинг Actuator. CX Codex +1 11 800установок spring-boot-engineer https://github.com/Jeffallan Разворачивает архитектуру Spring Boot 3.x, контроллеры, репозитории Spring Data JPA и правила Spring Security 6. Пригодится при сборке REST API, реактивных сервисов и микросервисов на Java. CX Codex +1 8 400установок spring-boot Mindrally Скилл задаёт агенту стиль кода на Spring Boot: REST-контроллеры, тесты, безопасность, сборка и деплой. Пригодится, когда проект на Java и хочется единообразия. CX Codex +1 832установок spring-boot-development manutej Скилл для ИИ-агента, который подсказывает, как писать Spring Boot: авто-конфигурация, внедрение зависимостей, REST-контроллеры, Spring Data и Spring Security. CX Codex +1 534установок

Из того же набора93

nestjs-code-review Скилл для ревью NestJS-приложений: проверяет контроллеры, сервисы, модули, DI, гарды и работу с базой. Пригодится перед мержем пул-реквеста. CX Codex +1 3 800установок spring-boot-resilience4j Скилл добавляет паттерны отказоустойчивости Resilience4j в Spring Boot 3.x. Он помогает настроить размыкатели цепи и повторные вызовы при сбоях внешних сервисов. CX Codex +1 3 800установок unit-test-service-layer Скилл задаёт агенту шаблон юнит-тестов сервисного слоя на Mockito: моки репозиториев, проверка вызовов, сценарии с исключениями. CX Codex +1 3 800установок nestjs-best-practices Скилл задаёт агенту правила NestJS: модули, области видимости провайдеров, фильтры исключений, DTO-валидация и Drizzle ORM. CX Codex +1 3 800установок zod-validation-utilities Помогает писать схемы Zod v4 для проверки API, форм и конфигурации в TypeScript. Пригодится для разбора внешних данных и понятной обработки ошибок. CX Codex +1 3 800установок spring-boot-event-driven-patterns Скилл для Spring Boot 3.x: доменные события, @TransactionalEventListener, Kafka и transactional outbox. Пригодится, когда синхронные вызовы между сервисами пора заменить на события. CX Codex +1 3 800установок chunking-strategy Помогает настроить нарезку текста для RAG-систем и векторных баз данных. Подбирает размер чанков от 256 до 1024 токенов и проверяет метрики извлечения. CX Codex +1 3 800установок aws-sdk-java-v2-rds Скилл помогает управлять базами данных Amazon RDS через AWS SDK for Java 2.x. Пригодится при настройке инстансов, снэпшотов и групп параметров в коде на Java. CX Codex +1 3 700установок

Спонсоры проекта

Компании, которые помогают держать аналитику открытой