Skip to content

Commit

Permalink
Review Caching infrastructure documentation
Browse files Browse the repository at this point in the history
Closes gh-33288
  • Loading branch information
snicoll committed Jul 29, 2024
1 parent 9d9e621 commit 46ba13b
Show file tree
Hide file tree
Showing 3 changed files with 27 additions and 53 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -524,7 +524,7 @@ To enable caching annotations add the annotation `@EnableCaching` to one of your
----
@Configuration
@EnableCaching
public class AppConfig {
class AppConfig {
@Bean
CacheManager cacheManager() {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/*
* Copyright 2002-2023 the original author or authors.
* Copyright 2002-2024 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
Expand Down Expand Up @@ -29,8 +29,8 @@
* cache management.
*
* <p>See @{@link EnableCaching} for general examples and context; see
* {@link #cacheManager()}, {@link #cacheResolver()} and {@link #keyGenerator()}
* for detailed instructions.
* {@link #cacheManager()}, {@link #cacheResolver()}, {@link #keyGenerator()}, and
* {@link #errorHandler()} for detailed instructions.
*
* @author Chris Beams
* @author Stephane Nicoll
Expand All @@ -46,14 +46,15 @@ public interface CachingConfigurer {
* management of the cache resolution, consider setting the
* {@link CacheResolver} directly.
* <p>Implementations must explicitly declare
* {@link org.springframework.context.annotation.Bean @Bean}, e.g.
* {@link org.springframework.context.annotation.Bean @Bean} so that
* the cache manager participates in the lifecycle of the context, e.g.
* <pre class="code">
* &#064;Configuration
* &#064;EnableCaching
* public class AppConfig implements CachingConfigurer {
* class AppConfig implements CachingConfigurer {
* &#064;Bean // important!
* &#064;Override
* public CacheManager cacheManager() {
* CacheManager cacheManager() {
* // configure and return CacheManager instance
* }
* // ...
Expand All @@ -70,17 +71,18 @@ default CacheManager cacheManager() {
* Return the {@link CacheResolver} bean to use to resolve regular caches for
* annotation-driven cache management. This is an alternative and more powerful
* option of specifying the {@link CacheManager} to use.
* <p>If both a {@link #cacheManager()} and {@code #cacheResolver()} are set,
* <p>If both a {@link #cacheManager()} and {@code cacheResolver()} are set,
* the cache manager is ignored.
* <p>Implementations must explicitly declare
* {@link org.springframework.context.annotation.Bean @Bean}, e.g.
* {@link org.springframework.context.annotation.Bean @Bean} so that
* the cache resolver participates in the lifecycle of the context, e.g.
* <pre class="code">
* &#064;Configuration
* &#064;EnableCaching
* public class AppConfig implements CachingConfigurer {
* class AppConfig implements CachingConfigurer {
* &#064;Bean // important!
* &#064;Override
* public CacheResolver cacheResolver() {
* CacheResolver cacheResolver() {
* // configure and return CacheResolver instance
* }
* // ...
Expand All @@ -95,20 +97,8 @@ default CacheResolver cacheResolver() {

/**
* Return the key generator bean to use for annotation-driven cache management.
* Implementations must explicitly declare
* {@link org.springframework.context.annotation.Bean @Bean}, e.g.
* <pre class="code">
* &#064;Configuration
* &#064;EnableCaching
* public class AppConfig implements CachingConfigurer {
* &#064;Bean // important!
* &#064;Override
* public KeyGenerator keyGenerator() {
* // configure and return KeyGenerator instance
* }
* // ...
* }
* </pre>
* <p>By default, {@link org.springframework.cache.interceptor.SimpleKeyGenerator}
* is used.
* See @{@link EnableCaching} for more complete examples.
*/
@Nullable
Expand All @@ -118,22 +108,8 @@ default KeyGenerator keyGenerator() {

/**
* Return the {@link CacheErrorHandler} to use to handle cache-related errors.
* <p>By default,{@link org.springframework.cache.interceptor.SimpleCacheErrorHandler}
* is used and simply throws the exception back at the client.
* <p>Implementations must explicitly declare
* {@link org.springframework.context.annotation.Bean @Bean}, e.g.
* <pre class="code">
* &#064;Configuration
* &#064;EnableCaching
* public class AppConfig implements CachingConfigurer {
* &#064;Bean // important!
* &#064;Override
* public CacheErrorHandler errorHandler() {
* // configure and return CacheErrorHandler instance
* }
* // ...
* }
* </pre>
* <p>By default, {@link org.springframework.cache.interceptor.SimpleCacheErrorHandler}
* is used, which throws the exception back at the client.
* See @{@link EnableCaching} for more complete examples.
*/
@Nullable
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/*
* Copyright 2002-2023 the original author or authors.
* Copyright 2002-2024 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
Expand Down Expand Up @@ -35,16 +35,16 @@
* <pre class="code">
* &#064;Configuration
* &#064;EnableCaching
* public class AppConfig {
* class AppConfig {
*
* &#064;Bean
* public MyService myService() {
* MyService myService() {
* // configure and return a class having &#064;Cacheable methods
* return new MyService();
* }
*
* &#064;Bean
* public CacheManager cacheManager() {
* CacheManager cacheManager() {
* // configure and return an implementation of Spring's CacheManager SPI
* SimpleCacheManager cacheManager = new SimpleCacheManager();
* cacheManager.setCaches(Set.of(new ConcurrentMapCache("default")));
Expand Down Expand Up @@ -103,26 +103,25 @@
* <pre class="code">
* &#064;Configuration
* &#064;EnableCaching
* public class AppConfig implements CachingConfigurer {
* class AppConfig implements CachingConfigurer {
*
* &#064;Bean
* public MyService myService() {
* MyService myService() {
* // configure and return a class having &#064;Cacheable methods
* return new MyService();
* }
*
* &#064;Bean
* &#064;Override
* public CacheManager cacheManager() {
* CacheManager cacheManager() {
* // configure and return an implementation of Spring's CacheManager SPI
* SimpleCacheManager cacheManager = new SimpleCacheManager();
* cacheManager.setCaches(Set.of(new ConcurrentMapCache("default")));
* return cacheManager;
* }
*
* &#064;Bean
* &#064;Override
* public KeyGenerator keyGenerator() {
* KeyGenerator keyGenerator() {
* // configure and return an implementation of Spring's KeyGenerator SPI
* return new MyKeyGenerator();
* }
Expand All @@ -137,9 +136,8 @@
* org.springframework.cache.interceptor.KeyGenerator KeyGenerator} SPI. Normally,
* {@code @EnableCaching} will configure Spring's
* {@link org.springframework.cache.interceptor.SimpleKeyGenerator SimpleKeyGenerator}
* for this purpose, but when implementing {@code CachingConfigurer}, a key generator
* must be provided explicitly. Return {@code null} or {@code new SimpleKeyGenerator()}
* from this method if no customization is necessary.
* for this purpose, but when implementing {@code CachingConfigurer}, a custom key
* generator can be specified.
*
* <p>{@link CachingConfigurer} offers additional customization options:
* see the {@link CachingConfigurer} javadoc for further details.
Expand Down

0 comments on commit 46ba13b

Please sign in to comment.