From developer-kit-java
Implements Spring Boot caching with Caffeine, Redis, EhCache providers: configures TTL/eviction, applies @Cacheable/@CachePut/@CacheEvict annotations, validates hit/miss behavior, exposes Actuator metrics.
How this skill is triggered — by the user, by Claude, or both
Slash command
/developer-kit-java:spring-boot-cacheThis skill is limited to the following tools:
The summary Claude sees in its skill listing — used to decide when to auto-load this skill
6-step workflow for enabling cache abstraction, configuring providers (Caffeine,
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.
@Cacheable, @CachePut, or @CacheEvict to service methods.Add dependencies — spring-boot-starter-cache plus a provider:
caffeine starterspring-boot-starter-data-redisehcache starterEnable caching — annotate a @Configuration class with @EnableCaching
and define a CacheManager bean.
Annotate methods — @Cacheable for reads, @CachePut for writes,
@CacheEvict for deletions.
Configure TTL/eviction — set spring.cache.caffeine.spec,
spring.cache.redis.time-to-live, or spring.cache.ehcache.config.
Shape keys — use SpEL in key attributes; guard with
condition/unless for selective caching.
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.
@Cacheable Usage@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
@Cacheable(value = "products", key = "#id", condition = "#price > 100")
public Product getProduct(Long id, BigDecimal price) { ... }
// Only expensive products are cached
@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.
@CacheResult, @CacheRemove) for providers favoring
JSR-107 interoperability; avoid mixing with Spring annotations on the same method.Mono, Flux) or CompletableFuture values.CacheControl headers when exposing cached responses via REST.@Scheduled for time-bound caches.CacheManagementService for programmatic cacheManager.getCache(name).If cache misses persist after adding @Cacheable:
@EnableCaching is present on a @Configuration class.cacheManager or explicitly
referenced via cacheManager = "myCacheManager".references/spring-framework-cache-docs.md:
curated excerpts from Spring Framework Reference Guide.references/spring-cache-doc-snippet.md:
narrative overview from Spring documentation.references/cache-core-reference.md:
annotation parameters, dependency matrices, property catalogs.references/cache-examples.md:
end-to-end examples with tests.users, orders) to simplify eviction.npx claudepluginhub giuseppe-trisciuoglio/developer-kit --plugin developer-kit-javaConfigures and reviews Spring Boot caching with Redis or Caffeine, applies @Cacheable/@CacheEvict/@CachePut, detects setups, and optimizes repeated DB/API calls.
Generates unit tests for Spring Cache annotations (@Cacheable, @CachePut, @CacheEvict) using mocked ConcurrentMapCacheManager to verify hits/misses, SpEL keys, evictions, and conditional caching.
Analyzes cache strategies, invalidates patterns, and detects issues in Redis, Memcached, or in-memory caches. Guides TTL assessment, access pattern analysis, and anti-pattern detection.