spring-boot-cache — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited spring-boot-cache (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
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.spring-boot-starter-cache plus a provider:caffeine starterspring-boot-starter-data-redisehcache starter@Configuration class with @EnableCachingand define a CacheManager bean.
@Cacheable for reads, @CachePut for writes,@CacheEvict for deletions.
spring.cache.caffeine.spec,spring.cache.redis.time-to-live, or spring.cache.ehcache.config.
key attributes; guard withcondition/unless for selective caching.
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 favoringJSR-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.proxies; self-invocation bypasses the cache).
cacheManager or explicitlyreferenced via cacheManager = "myCacheManager".
curated excerpts from Spring Framework Reference Guide.
narrative overview from Spring documentation.
annotation parameters, dependency matrices, property catalogs.
end-to-end examples with tests.
users, orders) to simplify eviction.~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.