zoukankan      html  css  js  c++  java
  • 第九章:(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 {}
  • 相关阅读:
    Hadoop1.2.0开发笔记(四)
    Datalist、GridView、Repeater 的区别
    oAuth
    浏览器沙箱技术
    28个HTML5特征、窍门和技术
    在Windows 8 JavaScript Metro Application 开发
    CSS浮动属性Float详解
    Windows 8为什么会是开发人员的2012
    CSS实现截取隐藏文字
    国外可绑定域名的免费空间(精选)
  • 原文地址:https://www.cnblogs.com/niujifei/p/15730994.html
Copyright © 2011-2022 走看看