springboot项目中,ehcache报错,需要CacheManager单例的解决办法

2021-06-08 00:02

阅读:564

标签:map   路径   his   单例   cti   版本   run   磁盘   policy   

在新的springboot项目中,如果在mybatis中使用了ehcache后,再第二次使用ehcache,会提示错误

Another CacheManager with same name default already exists in the same VM. Please provide unique names for each CacheManager in the config or do one of following:

原因是在ehcache2.5版本后,cachemanager必须是单例的,不允许多次创建。

解决办法

在config的配置文件中,新建一个bean,然后署名,在程序引用他时,标注这个name为新建的cachemanager

配置代码

@Configuration
public class EhCacheConfig {

//    @Bean
//    public CacheManager getCacheManager() {
//        
//        return  CacheManager.create("classpath:ehcache.xml");
//    }
    @Bean(name = "demo")
    public CacheManager getCacheManagerDemo() {
        return  CacheManager.create("classpath:ehcache2.xml");
    }
}

 

ehcache2.xml ( ehcache.xml文件为系统默认加载的额,这里必须另建一个xml文件,以示区分 )

xml version="1.0" encoding="UTF-8"?>
ehcache name="demo"  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="http://ehcache.org/ehcache.xsd"
updateCheck="false">

    
    diskStore path="D:\44test\ehcache" />

    defaultCache maxElementsInMemory="1000"
        maxElementsOnDisk="10000000" eternal="false" overflowToDisk="true"
        timeToIdleSeconds="120" timeToLiveSeconds="120"
        diskExpiryThreadIntervalSeconds="120" memoryStoreEvictionPolicy="LRU">
    defaultCache>
     
   
    
ehcache>

 

引用部分

在service层

@Cacheable(cacheManager = "demo")
    public List queryAll() {
        // TODO Auto-generated method stub
        return this.userMapper.queryAll();
    }

启动入口类

@SpringBootApplication
@MapperScan(basePackages = {"cn.taotao.dao"})
@EnableCaching
public class DemoApplication {

    public static void main(String[] args) {
        SpringApplication.run(DemoApplication.class, args);
    }

}

 

springboot项目中,ehcache报错,需要CacheManager单例的解决办法

标签:map   路径   his   单例   cti   版本   run   磁盘   policy   

原文地址:https://www.cnblogs.com/sdgtxuyong/p/14547822.html

上一篇:函数组合

下一篇:Java基础之集合篇 (二)


评论


亲,登录后才可以留言!