基于Xml配置的纯Ehcache整合
EhCache 是一个纯Java的进程内缓存框架,对于springboot项目来说如果只是简单使用选择该工具是最优解。由于项目中需要对某些数据进行缓存同时项目有一定限制不能使用spring cache,这里记录下如何基于Ehcache的xml来配置使用Ehcache。
首先项目中需要引入依赖(基于3.x版本):
<dependency> <groupId>org.ehcache</groupId> <artifactId>ehcache</artifactId> </dependency>
编写Ehcache配置xml:
<?xml version="1.0" encoding="UTF-8"?> <eh:config xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xmlns:eh='http://www.ehcache.org/v3' xmlns:jsr107='http://www.ehcache.org/v3/jsr107' xsi:schemaLocation=" http://www.ehcache.org/v3 http://www.ehcache.org/schema/ehcache-core-3.3.xsd http://www.ehcache.org/v3/jsr107 http://www.ehcache.org/schema/ehcache-107-ext-3.3.xsd"> <!--缓存模板--> <eh:cache-template name="default"> <eh:expiry> <eh:ttl unit="hours">2</eh:ttl> </eh:expiry> <eh:resources> <eh:heap>2000</eh:heap> <eh:offheap unit="MB">50</eh:offheap> </eh:resources> </eh:cache-template> <eh:cache alias="xxxxx" uses-template="default"> <eh:key-type serializer="org.ehcache.impl.serialization.StringSerializer">java.lang.String</eh:key-type> <eh:value-type serializer="org.ehcache.impl.serialization.LongSerializer">java.lang.Long</eh:value-type> </eh:cache> </eh:config>
SpringBoot配置类:
@Configuration public class EhCacheConfig { @Autowired private ResourceLoader resourceLoader; /** * EhcacheManager * * @return * @throws IOException */ @Bean public EhcacheManager ehcacheManager() throws IOException { URL url = resourceLoader.getResource("classpath:ehcache.xml").getURL(); XmlConfiguration configuration = new XmlConfiguration(url); EhcacheManager manager = new EhcacheManager(configuration); manager.init(); return manager; } /** * xxxCache * * @param manager * @return */ @Bean("xxxxx") public Cache<String, Long> xxxCache(@Autowired EhcacheManager manager) { return manager.getCache("xxxxx", String.class, Long.class); } }