• SpringCache


    官方文档:https://docs.spring.io/spring/docs/4.3.13.RELEASE/spring-framework-reference/htmlsingle/#cache

    对应的XML配置文件:

    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:cache="http://www.springframework.org/schema/cache"
           xsi:schemaLocation="http://www.springframework.org/schema/beans
           http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/cache http://www.springframework.org/schema/cache/spring-cache.xsd">
    
        <cache:annotation-driven/>
        <bean id="cacheManager" class="org.springframework.cache.support.SimpleCacheManager">
            <property name="caches">
                <set>
                    <bean class="org.springframework.cache.concurrent.ConcurrentMapCacheFactoryBean">
                        <property name="name" value="default"/>
                    </bean>
                </set>
            </property>
        </bean>
        <bean id="cacheManager2" class="org.springframework.cache.concurrent.ConcurrentMapCacheManager">
        </bean>
    
    </beans>

     对应的实现:

    import org.slf4j.Logger;
    import org.slf4j.LoggerFactory;
    import org.springframework.cache.annotation.CacheConfig;
    import org.springframework.cache.annotation.CacheEvict;
    import org.springframework.cache.annotation.CachePut;
    import org.springframework.cache.annotation.Cacheable;
    import org.springframework.stereotype.Service;
    
    import java.util.Date;
    
    /**
     * Created by wangzhilei3 on 2017/12/27.
     */
    @Service
    @CacheConfig(cacheNames = "default", cacheManager = "cacheManager2")
    public class CacheableService {
        private static final Logger log = LoggerFactory.getLogger(CacheableService.class);
    
        /**
         * 启用缓存
         *
         * @param l
         * @return
         */
        @Cacheable()
        public Date getDate(Long l) {
            log.info("缓存未生效");
            return new Date();
        }
    
        /**
         * 更新缓存
         *
         * @param l
         * @return
         */
        @CachePut()
        public Date putDate(Long l) {
            log.info("更新");
            return new Date();
        }
    
        /**
         * 删除缓存
         *
         * @param l
         */
        @CacheEvict()
        public void deleteDate(Long l) {
            log.info("删除");
        }
    
    }
    

      增加 ”cacheNames“

    import org.slf4j.Logger;
    import org.slf4j.LoggerFactory;
    import org.springframework.cache.annotation.CacheConfig;
    import org.springframework.cache.annotation.Cacheable;
    import org.springframework.stereotype.Service;
    
    
    /**
     * Created by wangzhilei3 on 2017/12/27.
     */
    @Service
    @CacheConfig(cacheNames = "default,sting",cacheManager = "cacheManager2")
    public class CacheableServiceOfString {
        private static Logger logger = LoggerFactory.getLogger(CacheableServiceOfString.class);
        @Cacheable("sting")
        public String getDate(Long l){
            logger.info("缓存未生效");
            return "hello";
        }
    }
    

      需要注意的是不同返回类型的方法共享同一个缓存(@Cacheable("sting")注解相同),当存在键冲突时,会产生类型转换异常。

    当@CacheConfig(cacheNames = "default,sting",cacheManager = "cacheManager2")中的cacheNames 为多个,而方法注解@Cacheable()中的参数缺省时,两个缓存队列会同时生效,所以不同的返回类型要尽量避免采用相同的cacheName。

  • 相关阅读:
    ZOJ 3949 Edge to the Root( 树形dp)
    CCF201812-3 CIDR合并
    CF700E E. Cool Slogans
    BZOJ4552: [Tjoi2016&Heoi2016]排序
    BZOJ3238: [Ahoi2013]差异
    BZOJ4566: [Haoi2016]找相同字符
    Codeforces Global Round 1 A~F
    (HDU)1555-- How many days? (多少天)
    (HDU)1491-- Octorber 21st (校庆)
    (HDU)1465-- 不容易系列之一
  • 原文地址:https://www.cnblogs.com/heapStark/p/8127904.html
Copyright © 2020-2023  润新知