前言:想用下ehcache,发现网上大部分都是ehcache2,3的很少,有些还不正确。我就去官网看了文档,这里只是简单应用,和官网差距不大,想深入学习的可以参考官方文档(个人感觉指引不清晰,当时花费时间挺长,也可能我菜)https://www.ehcache.org/documentation/
首先,引入依赖:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-cache</artifactId>
</dependency>
<dependency>
<groupId>org.ehcache</groupId>
<artifactId>ehcache</artifactId>
</dependency>
然后有两种方式:xml配置和直接在config中配置(不知道术语是什么)。
1.xml配置
(1)resources中创建 ehcache.xml文件
<config
xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'
xmlns='http://www.ehcache.org/v3'
xsi:schemaLocation="http://www.ehcache.org/v3 http://www.ehcache.org/schema/ehcache-core.xsd">
<cache alias="foo">
<key-type>java.lang.String</key-type>
<value-type>java.lang.String</value-type>
<expiry>
<ttl unit="seconds">10</ttl>
</expiry>
<resources>
<heap unit="entries">20</heap>
<offheap unit="MB">10</offheap>
</resources>
</cache>
<cache-template name="myDefaults">
<key-type>java.lang.Long</key-type>
<value-type>java.lang.String</value-type>
<heap unit="entries">200</heap>
</cache-template>
<cache alias="bar" uses-template="myDefaults">
<key-type>java.lang.Number</key-type>
</cache>
<cache alias="simpleCache" uses-template="myDefaults" />
</config>
(2)创建EhcacheConfig.java文件
@Configuration
@EnableCaching
public class EhcacheConfig {
public static Cache<String, String> foo;
@Bean
public CacheManager getCacheManager() {
URL myUrl = getClass().getResource("/ehcache.xml");
XmlConfiguration xmlConfig = new XmlConfiguration(myUrl);
CacheManager myCacheManager = CacheManagerBuilder.newCacheManager(xmlConfig);
myCacheManager.init();
foo = myCacheManager.getCache("foo",String.class,String.class);
foo.put("ceshi","123");
return myCacheManager;
}
}
接下来就可在别的地方用了。
2.直接配置
创建EhcacheConfig.java
@Configuration
@EnableCaching
public class EhcacheConfig {
public static Cache<String, String> caster;
@Bean
public CacheManager getCacheManager() {
CacheManager cacheManager = CacheManagerBuilder.newCacheManagerBuilder()
.withCache("ceshi",CacheConfigurationBuilder.newCacheConfigurationBuilder(String.class,String.class, ResourcePoolsBuilder.heap(100)))
.build();
cacheManager.init();
Cache<String, String> myCache = cacheManager.createCache("myCache",
CacheConfigurationBuilder.newCacheConfigurationBuilder(String.class, String.class, ResourcePoolsBuilder.heap(100))
.withExpiry(ExpiryPolicyBuilder.timeToLiveExpiration(Duration.ofSeconds(20))));
caster = cacheManager.createCache("caster",
CacheConfigurationBuilder.newCacheConfigurationBuilder(String.class, String.class, ResourcePoolsBuilder.heap(100))
.withExpiry(ExpiryPolicyBuilder.timeToLiveExpiration(Duration.ofHours(12))));
return cacheManager;
}
}
使用:应该都会把
EhcacheConfig.foo.put("xxxx","xxx");
EhcacheConfig.foo.get("xxxx");
总结
两种方法差距不大,都是很简单的使用。推荐去官网看看,介绍挺详细,也有字段的介绍。
写的途中突然发现这和springboot有毛关系,引入的依赖似乎也没有用到,这似乎是spring的用法,如果有大佬知道,也可以指点一下。学艺不精,我也是个垃圾。然后就是相关的注解(@Cacheable,@CachePut...),这个我也是初学,然后也没有相关业务场景,就建议看别的帖子。初学者,共勉。