zoukankan      html  css  js  c++  java
  • spring源码分析之cache demo

    spring提供了对echache、guava、jcache的支持,先看一个echache的示例:

    import org.springframework.cache.CacheManager;
    import org.springframework.cache.annotation.EnableCaching;
    import org.springframework.cache.ehcache.EhCacheCacheManager;
    import org.springframework.cache.ehcache.EhCacheManagerFactoryBean;
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.ComponentScan;
    import org.springframework.context.annotation.Configuration;
    import org.springframework.core.io.ClassPathResource;
    
    @Configuration
    @EnableCaching
    @ComponentScan({ "com.mkyong.*" })
    public class AppConfig {
    
        @Bean
        public CacheManager cacheManager() {
            return new EhCacheCacheManager(ehCacheCacheManager().getObject());
        }
    
        @Bean
        public EhCacheManagerFactoryBean ehCacheCacheManager() {
            EhCacheManagerFactoryBean cmfb = new EhCacheManagerFactoryBean();
            cmfb.setConfigLocation(new ClassPathResource("ehcache.xml"));
            cmfb.setShared(true);
            
            return cmfb;
        }
    
        /*@Bean
        public CacheManager defaultCacheManager() {
            return new ConcurrentMapCacheManager("books");
        }*/
        
    }

    其中 echache.xml文件如下:

    <ehcache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:noNamespaceSchemaLocation="ehcache.xsd" updateCheck="true"
        monitoring="autodetect" dynamicConfig="true">
    
        <!-- <diskStore path="java.io.tmpdir" /> -->
        <diskStore path="c:\cache" />
    
        <cache name="movieFindCache" 
            maxEntriesLocalHeap="10000"
            maxEntriesLocalDisk="1000" 
            eternal="false" 
            diskSpoolBufferSizeMB="20"
            timeToIdleSeconds="300" timeToLiveSeconds="600"
            memoryStoreEvictionPolicy="LFU" 
            transactionalMode="off">
            <persistence strategy="localTempSwap" />
        </cache>
    
    </ehcache>

    缓存的使用:

    @Repository("movieDao")
    public class MovieDaoImpl implements MovieDao{
    
        @Cacheable(value="movieFindCache", key="#name")
        public Movie findByDirector(String name) {
            slowQuery(2000L);
            System.out.println("findByDirector is running...");
            return new Movie(1,"Forrest Gump","Robert Zemeckis");
        }
        
        private void slowQuery(long seconds){
            try {
                Thread.sleep(seconds);
            } catch (InterruptedException e) {
                throw new IllegalStateException(e);
            }
        }
        
    }

    参考文献:

    【1】http://www.mkyong.com/spring/spring-caching-and-ehcache-example/

  • 相关阅读:
    mongodb studio 3t 破解无限使用脚本
    香港低价linux虚拟主机,
    c#4.0 Task.Factory.StartNew 用法
    系统进不去怎么办?教你利用bootice工具引导修复系统
    用一个URL加一个JAVA壳做成一个安卓应用
    ANDROID开机动画分析
    你的Android不好用,都是因为这几点原因
    横竖屏切换时不销毁当前activity 和 锁定屏幕
    APP流氓大法之apk 静默安装
    设备管理器勾选后不能再取消了
  • 原文地址:https://www.cnblogs.com/davidwang456/p/5695630.html
Copyright © 2011-2022 走看看