diff --git a/pom.xml b/pom.xml
index c34ee8e..b729a7b 100644
--- a/pom.xml
+++ b/pom.xml
@@ -27,6 +27,7 @@
+ * 启动类 + *
+ * + * @package: com.xkcoding.cache.ehcache + * @description: 启动类 + * @author: yangkai.shen + * @date: Created in 2018/11/16 17:02 + * @copyright: Copyright (c) 2018 + * @version: V1.0 + * @modified: yangkai.shen + */ +@SpringBootApplication +@EnableCaching +public class SpringBootDemoCacheEhcacheApplication { + + public static void main(String[] args) { + SpringApplication.run(SpringBootDemoCacheEhcacheApplication.class, args); + } +} +``` + +## application.yml + +```yaml +spring: + cache: + type: ehcache + ehcache: + config: classpath:ehcache.xml +logging: + level: + com.xkcoding: debug +``` + +## ehcache.xml + +```xml + ++ * UserService + *
+ * + * @package: com.xkcoding.cache.ehcache.service.impl + * @description: UserService + * @author: yangkai.shen + * @date: Created in 2018/11/16 16:54 + * @copyright: Copyright (c) 2018 + * @version: V1.0 + * @modified: yangkai.shen + */ +@Service +@Slf4j +public class UserServiceImpl implements UserService { + /** + * 模拟数据库 + */ + private static final Map+ * ehcache缓存测试 + *
+ * + * @package: com.xkcoding.cache.ehcache.service + * @description: ehcache缓存测试 + * @author: yangkai.shen + * @date: Created in 2018/11/16 16:58 + * @copyright: Copyright (c) 2018 + * @version: V1.0 + * @modified: yangkai.shen + */ +@Slf4j +public class UserServiceTest extends SpringBootDemoCacheEhcacheApplicationTests { + + @Autowired + private UserService userService; + + /** + * 获取两次,查看日志验证缓存 + */ + @Test + public void getTwice() { + // 模拟查询id为1的用户 + User user1 = userService.get(1L); + log.debug("【user1】= {}", user1); + + // 再次查询 + User user2 = userService.get(1L); + log.debug("【user2】= {}", user2); + // 查看日志,只打印一次日志,证明缓存生效 + } + + /** + * 先存,再查询,查看日志验证缓存 + */ + @Test + public void getAfterSave() { + userService.saveOrUpdate(new User(4L, "user4")); + + User user = userService.get(4L); + log.debug("【user】= {}", user); + // 查看日志,只打印保存用户的日志,查询是未触发查询日志,因此缓存生效 + } + + /** + * 测试删除,查看redis是否存在缓存数据 + */ + @Test + public void deleteUser() { + // 查询一次,使ehcache中存在缓存数据 + userService.get(1L); + // 删除,查看ehcache是否存在缓存数据 + userService.delete(1L); + } +} +``` + +## 参考 + +- Ehcache 官网:http://www.ehcache.org/documentation/ +- Spring Boot 官方文档:https://docs.spring.io/spring-boot/docs/2.1.0.RELEASE/reference/htmlsingle/#boot-features-caching-provider-ehcache2 +- 博客:https://juejin.im/post/5b308de9518825748b56ae1d \ No newline at end of file diff --git a/spring-boot-demo-cache-ehcache/pom.xml b/spring-boot-demo-cache-ehcache/pom.xml new file mode 100644 index 0000000..62f7e9b --- /dev/null +++ b/spring-boot-demo-cache-ehcache/pom.xml @@ -0,0 +1,69 @@ + ++ * 启动类 + *
+ * + * @package: com.xkcoding.cache.ehcache + * @description: 启动类 + * @author: yangkai.shen + * @date: Created in 2018/11/16 17:02 + * @copyright: Copyright (c) 2018 + * @version: V1.0 + * @modified: yangkai.shen + */ +@SpringBootApplication +@EnableCaching +public class SpringBootDemoCacheEhcacheApplication { + + public static void main(String[] args) { + SpringApplication.run(SpringBootDemoCacheEhcacheApplication.class, args); + } +} diff --git a/spring-boot-demo-cache-ehcache/src/main/java/com/xkcoding/cache/ehcache/entity/User.java b/spring-boot-demo-cache-ehcache/src/main/java/com/xkcoding/cache/ehcache/entity/User.java new file mode 100644 index 0000000..20c8187 --- /dev/null +++ b/spring-boot-demo-cache-ehcache/src/main/java/com/xkcoding/cache/ehcache/entity/User.java @@ -0,0 +1,35 @@ +package com.xkcoding.cache.ehcache.entity; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.io.Serializable; + +/** + *+ * 用户实体 + *
+ * + * @package: com.xkcoding.cache.ehcache.entity + * @description: 用户实体 + * @author: yangkai.shen + * @date: Created in 2018/11/16 16:53 + * @copyright: Copyright (c) 2018 + * @version: V1.0 + * @modified: yangkai.shen + */ +@Data +@AllArgsConstructor +@NoArgsConstructor +public class User implements Serializable { + private static final long serialVersionUID = 2892248514883451461L; + /** + * 主键id + */ + private Long id; + /** + * 姓名 + */ + private String name; +} diff --git a/spring-boot-demo-cache-ehcache/src/main/java/com/xkcoding/cache/ehcache/service/UserService.java b/spring-boot-demo-cache-ehcache/src/main/java/com/xkcoding/cache/ehcache/service/UserService.java new file mode 100644 index 0000000..f607d02 --- /dev/null +++ b/spring-boot-demo-cache-ehcache/src/main/java/com/xkcoding/cache/ehcache/service/UserService.java @@ -0,0 +1,41 @@ +package com.xkcoding.cache.ehcache.service; + +import com.xkcoding.cache.ehcache.entity.User; + +/** + *+ * UserService + *
+ * + * @package: com.xkcoding.cache.ehcache.service + * @description: UserService + * @author: yangkai.shen + * @date: Created in 2018/11/16 16:53 + * @copyright: Copyright (c) 2018 + * @version: V1.0 + * @modified: yangkai.shen + */ +public interface UserService { + /** + * 保存或修改用户 + * + * @param user 用户对象 + * @return 操作结果 + */ + User saveOrUpdate(User user); + + /** + * 获取用户 + * + * @param id key值 + * @return 返回结果 + */ + User get(Long id); + + /** + * 删除 + * + * @param id key值 + */ + void delete(Long id); +} diff --git a/spring-boot-demo-cache-ehcache/src/main/java/com/xkcoding/cache/ehcache/service/impl/UserServiceImpl.java b/spring-boot-demo-cache-ehcache/src/main/java/com/xkcoding/cache/ehcache/service/impl/UserServiceImpl.java new file mode 100644 index 0000000..dca9949 --- /dev/null +++ b/spring-boot-demo-cache-ehcache/src/main/java/com/xkcoding/cache/ehcache/service/impl/UserServiceImpl.java @@ -0,0 +1,83 @@ +package com.xkcoding.cache.ehcache.service.impl; + +import com.google.common.collect.Maps; +import com.xkcoding.cache.ehcache.entity.User; +import com.xkcoding.cache.ehcache.service.UserService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.cache.annotation.CacheEvict; +import org.springframework.cache.annotation.CachePut; +import org.springframework.cache.annotation.Cacheable; +import org.springframework.stereotype.Service; + +import java.util.Map; + +/** + *+ * UserService + *
+ * + * @package: com.xkcoding.cache.ehcache.service.impl + * @description: UserService + * @author: yangkai.shen + * @date: Created in 2018/11/16 16:54 + * @copyright: Copyright (c) 2018 + * @version: V1.0 + * @modified: yangkai.shen + */ +@Service +@Slf4j +public class UserServiceImpl implements UserService { + /** + * 模拟数据库 + */ + private static final Map+ * ehcache缓存测试 + *
+ * + * @package: com.xkcoding.cache.ehcache.service + * @description: ehcache缓存测试 + * @author: yangkai.shen + * @date: Created in 2018/11/16 16:58 + * @copyright: Copyright (c) 2018 + * @version: V1.0 + * @modified: yangkai.shen + */ +@Slf4j +public class UserServiceTest extends SpringBootDemoCacheEhcacheApplicationTests { + + @Autowired + private UserService userService; + + /** + * 获取两次,查看日志验证缓存 + */ + @Test + public void getTwice() { + // 模拟查询id为1的用户 + User user1 = userService.get(1L); + log.debug("【user1】= {}", user1); + + // 再次查询 + User user2 = userService.get(1L); + log.debug("【user2】= {}", user2); + // 查看日志,只打印一次日志,证明缓存生效 + } + + /** + * 先存,再查询,查看日志验证缓存 + */ + @Test + public void getAfterSave() { + userService.saveOrUpdate(new User(4L, "user4")); + + User user = userService.get(4L); + log.debug("【user】= {}", user); + // 查看日志,只打印保存用户的日志,查询是未触发查询日志,因此缓存生效 + } + + /** + * 测试删除,查看redis是否存在缓存数据 + */ + @Test + public void deleteUser() { + // 查询一次,使ehcache中存在缓存数据 + userService.get(1L); + // 删除,查看ehcache是否存在缓存数据 + userService.delete(1L); + } +} \ No newline at end of file