Ehcache3配置使用

Ehcache3配置方式与Ehcache2的配置方式区别很大!
缓存管理器只有全局状态下其他地方才能根据名称拿到缓存,也就是只有保证在同一个缓存管理器下才能拿到指定缓存

两种配置方式可同时使用

xml配置方式



    

    
    

    
    
        
        java.lang.String
        java.lang.String
        
            
            2000
            
            500
        
    

    
    
        java.lang.Long
        java.lang.String
        
        200
    
    
    
        java.lang.Number
        
            
            10
        
    
    
    


    
        java.lang.String
        java.lang.Object
        200
    
    
        java.lang.String
        
            
            10
        
    

SpringBoot配置

# 新版本使用jcache,老版本使用ehcache
spring.cache.jcache.config=classpath:ehcache3.xml

代码配置方式

  • 资源池生成器配置持久化
ResourcePoolsBuilder resourcePoolsBuilder = ResourcePoolsBuilder.newResourcePoolsBuilder()
    // 堆内缓存大小
    .heap(heapCacheSize, MemoryUnit.KB)
    // 堆外缓存大小
    .offheap(offHeapCacheSize, MemoryUnit.MB)
    // 文件缓存大小
    .disk(diskCacheSize, MemoryUnit.MB);
  • 生成配置
CacheConfigurationBuilder.newCacheConfigurationBuilder(keyType, valueType, resourcePoolsBuilder)
    // 缓存超时时间
    .withExpiry(ExpiryPolicyBuilder.timeToLiveExpiration(withExpiry))
    // 统计对象大小时对象图遍历深度
    .withSizeOfMaxObjectGraph(heapMaxObjectGraph)
    //可缓存的最大对象大小
    .withSizeOfMaxObjectSize(heapMaxObjectSize, MemoryUnit.MB)
    // 添加监听器
    .add(CacheEventListenerConfigurationBuilder.newEventListenerConfiguration(
            new EhCacheEventListener(), EventType.EXPIRED).unordered().asynchronous())
    //最后调用build()返回一个完整的实例,但是该实例并未初始化。
    .build();
  • 根据配置创建缓存管理器
CacheManagerBuilder.newCacheManagerBuilder().withCache(cacheName, config).build(true);

你可能感兴趣的:(ehcache,java,java-ee,ca,缓存)