第九章:(5)Spring Boot 与 缓存 之 @Caching&@CacheConfig注解


一、@Caching

  @Caching 定义了复杂的缓存规则:

@Target({ElementType.METHOD, ElementType.TYPE}) @Retention(RetentionPolicy.RUNTIME) @Inherited @Documented public @interface Caching { Cacheable[] cacheable() default {}; CachePut[] put() default {}; CacheEvict[] evict() default {}; }

 

 

  示例:

 @Caching( cacheable = { @Cacheable(value={"emp"}, key = "#lastName") }, put = { @CachePut(value = {"emp"}, key = "#result.id"), @CachePut(value = {"emp"}, key = "#result.email") } ) public Employee getEmpByLastName(String lastName) { return employeeMapper.getEmpByLastName(lastName); }

 

  @Caching 定义了复杂的缓存规则,如果使用@CachePut注解,方法一定会运行。

 

二、@CacheConfig

  这个注解是加在类上,用于抽取缓存的公共配置。

  @CacheConfig

@Target(ElementType.TYPE) @Retention(RetentionPolicy.RUNTIME) @Documented public @interface CacheConfig { /** * Names of the default caches to consider for caching operations defined * in the annotated class. * <p>If none is set at the operation level, these are used instead of the default. * <p>May be used to determine the target cache (or caches), matching the * qualifier value or the bean names of a specific bean definition. */ String[] cacheNames() default {}; //指定缓存的名字 /** * The bean name of the default {@link org.springframework.cache.interceptor.KeyGenerator} to * use for the class. * <p>If none is set at the operation level, this one is used instead of the default. * <p>The key generator is mutually exclusive with the use of a custom key. When such key is * defined for the operation, the value of this key generator is ignored. */ String keyGenerator() default ""; //指定 key 的生成策略 /** * The bean name of the custom {@link org.springframework.cache.CacheManager} to use to * create a default {@link org.springframework.cache.interceptor.CacheResolver} if none * is set already. * <p>If no resolver and no cache manager are set at the operation level, and no cache * resolver is set via {@link #cacheResolver}, this one is used instead of the default. * @see org.springframework.cache.interceptor.SimpleCacheResolver */ String cacheManager() default ""; //指定 cacheManager /** * The bean name of the custom {@link org.springframework.cache.interceptor.CacheResolver} to use. * <p>If no resolver and no cache manager are set at the operation level, this one is used * instead of the default. */ String cacheResolver() default ""; }

 

 

  示例:

@CacheConfig(cacheNames = {"emp"}) //抽取缓存的公共配置
@Service public class EmployeeService {}

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM