zoukankan      html  css  js  c++  java
  • 项目缓存

    1.EHCacheInit.java类中写模块的初始化方法

       initModule(){

     System.out.println("***********"+Util.getNowDateStr()+"初始化模块——开始*************");

    List<ModuleManager> list = new ArrayList<ModuleManager>();
    try{
    StringBuffer sb = new StringBuffer();
    sb.append("SELECT * FROM t_modulemanager WHERE Status!=99 ORDER BY ModuleNumber");
    String sql = sb.toString();
    ILoadData moduleData=new LoadModule();
    list=DBHelper.getList(sql,moduleData);
    EHCacheHelper.putElement("moduleCache", "allModule", list);
    for(ModuleManager module:list){
    String ModuleName = module.getModuleName();
    EHCacheHelper.putElement("moduleCache", ModuleName, module);
    }
    }catch(Exception e) {
    Log.error(e);
    System.out.println(e.getMessage());
    System.out.println("***********"+Util.getNowDateStr()+"初始模块——出错*************");
    }
    System.out.println("***********"+Util.getNowDateStr()+"初始化模块——结束*************");

      }

    2.在ehcache.xml中配置

    <!-- 缓存配置
    name:缓存名称。
    maxElementsInMemory:缓存最大个数。
    eternal:对象是否永久有效,一但设置了,timeout将不起作用。
    timeToIdleSeconds:设置对象在失效前的允许闲置时间(单位:秒)。仅当eternal=false对象不是永久有效时使用,可选属性,默认值是0,也就是可闲置时间无穷大。
    timeToLiveSeconds:设置对象在失效前允许存活时间(单位:秒)。最大时间介于创建时间和失效时间之间。仅当eternal=false对象不是永久有效时使用,默认是0.,也就是对象存活时间无穷大。
    overflowToDisk:当内存中对象数量达到maxElementsInMemory时,Ehcache将会对象写到磁盘中。
    diskSpoolBufferSizeMB:这个参数设置DiskStore(磁盘缓存)的缓存区大小。默认是30MB。每个Cache都应该有自己的一个缓冲区。
    maxElementsOnDisk:硬盘最大缓存个数。
    diskPersistent:是否缓存虚拟机重启期数据 Whether the disk store persists between restarts of the Virtual Machine. The default value is false.
    diskExpiryThreadIntervalSeconds:磁盘失效线程运行时间间隔,默认是120秒。
    memoryStoreEvictionPolicy:当达到maxElementsInMemory限制时,Ehcache将会根据指定的策略去清理内存。默认策略是LRU(最近最少使用)。你可以设置为FIFO(先进先出)或是LFU(较少使用)。
    clearOnFlush:内存数量最大时是否清除。
    -->

    <cache name="moduleCache" eternal="false" maxElementsInMemory="100" overflowToDisk="false" diskPersistent="false" timeToIdleSeconds="0" timeToLiveSeconds="0" memoryStoreEvictionPolicy="LRU" />

    3.EHCacheAop.java

    @Pointcut("execution (* com.cwises.service.system.module.ModuleServiceImp.update*(..))")
    public void updateModule() {
    }
    @Pointcut("execution (* com.cwises.service.system.systemparam.ModuleServiceImp.add*(..))")
    public void addModule() {
    }
    @After(value = "updateModule()")
    public void addModuleAfter(JoinPoint point) throws Exception {
    EHCacheInit.initModule();
    }
    @After(value = "addModule()")
    public void updateModuleAfter(JoinPoint point) throws Exception {
    EHCacheInit.initModule();
    }

    4.CacheInit.java

    init(){

      EHCacheInit.initModule();

    }

    5.缓存是靠拦截serviceImp实现里面的方法名称来进行的,项目用的是泛型 ,所有在serviceImp里面将泛型的add  update delete select 方法重写

      并且加上@CacheEvict(value = "authorization", allEntries = true)标签;

    参考:

    1.SpringAOP + EHcache 为service层增加缓存

    http://blog.csdn.net/lilongsheng1125/article/details/40918059

    2.Ehcache缓存框架使用

    http://my.oschina.net/chengjiansunboy/blog/70974

  • 相关阅读:
    JSON 序列化类 南京酷得软件
    哈哈哈哈哈哈 找回记忆
    Presto
    (转)在Total Commander下使用SVN
    在ubuntu12.04,64位中安装lnmp一键包mysql的问题
    阿里云服务器上搭建php环境+redis
    在ubuntu12.04,64位中安装nginx+php+redis+mysql
    Redis篇:单线程I/O模型
    工具篇:apachehttpClient 和 jdk11HttpClient的使用
    技能篇:关于缓存数据的一致性探讨
  • 原文地址:https://www.cnblogs.com/joycelishanhe/p/3945572.html
Copyright © 2011-2022 走看看