Spring Boot文档阅读笔记-EhCache的使用
发布日期:2021-06-30 10:47:04
浏览次数:3
分类:技术文章
本文共 4626 字,大约阅读时间需要 15 分钟。
这里要先注意2个概念:
buffer和cache,很多人会讲这两个概念混用。但其实这是两个概念!
buffer:一般是指存储临时数据的实体。只能读写一次,对于程序员来说buffer是可见的,比如TCB中,接收tcp数据的buffer。
cache:对于程序员来说是不可见的。允许多次获取相同的数据。这也就是EhCache不叫EhBuffer的原因。
程序结构如下:
首先来看下pom.xml
4.0.0 org.springframework.boot spring-boot-starter-parent 2.1.10.RELEASE com.example demo 0.0.1-SNAPSHOT demo Demo project for Spring Boot 1.8 org.springframework.boot spring-boot-starter-web org.projectlombok lombok true org.springframework.boot spring-boot-starter-test test org.springframework.boot spring-boot-starter-cache org.ehcache ehcache org.springframework.boot spring-boot-maven-plugin org.projectlombok lombok
下面是EhCache的配置
ehcache的配置文件需要放到资源文件下面,如上图的目录结构。
新建ehcache.xml内容如下:
上面的xml配置了自定义的缓存配置,还指定了放入缓存的元素的最大个数。以及内存回收策略采用LFU(最不长使用)。并且还设置了如果内存满了要不要存到磁盘上。
下面是在application.properties中指定ehcache.xml文件路径:
spring.cache.ehcache.config=classpath:ehcache.xml
下面创建一个实体类,缓存中保存的就是这个实体类的数据(逻辑上是一个对象,物理上得看EhCache的存储规则)
Employee.java
@Datapublic class Employee { private int id; private String name; private String role; public Employee() { } public Employee(int id, String name, String role) { this.id = id; this.name = name; this.role = role; }}
下面是缓存服务层的代码:
@Servicepublic class EmployeeService { @Cacheable(value = "employee") public ListgetListOfEmployees(){ System.out.println("getListOfEmployees is running..."); List employees = new ArrayList (4); employees.add(new Employee(1000, "Sumit", "Manager")); employees.add(new Employee(1001, "Souvik", "Java Developer")); employees.add(new Employee(1002, "Liton", "SQl Developer")); employees.add(new Employee(1003, "Debina", "Leader")); return employees; } @Cacheable(value = "employee", key = "#name") public Employee findEmployeeByName(String name, List employees) { System.out.println("findEmployeeByName is running..."); for (Employee emp : employees) { if (emp.getName().equalsIgnoreCase(name)) { return emp; } } return null; }}
@Cacheable:这个注解和ehcache.xml文件对应。如value为employee对应ehcache.xml中的
下面是启动类DemoApplication.java
@EnableCaching@SpringBootApplicationpublic class DemoApplication implements CommandLineRunner { @Autowired private EmployeeService employeeService; public static void main(String[] args) { SpringApplication.run(DemoApplication.class, args); } @Override public void run(String... args) throws Exception { ListlistOfEmployees = employeeService.getListOfEmployees(); System.out.println(listOfEmployees); System.out.println("---------------------------------------------------"); listOfEmployees = employeeService.getListOfEmployees(); System.out.println(listOfEmployees); System.out.println("---------------------------------------------------"); Employee employee = employeeService.findEmployeeByName("Sumit", listOfEmployees); System.out.println(employee); System.out.println("---------------------------------------------------"); employee = employeeService.findEmployeeByName("Sumit", listOfEmployees); System.out.println(employee); System.out.println("---------------------------------------------------"); employee = employeeService.findEmployeeByName("Liton", listOfEmployees); System.out.println(employee); System.out.println("---------------------------------------------------"); }}
程序运行结果如下:
可见,前两次调用一样的数据,第二次是直接从缓存中拿的。
源码打包下载地址:
转载地址:https://it1995.blog.csdn.net/article/details/115747734 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
留言是一种美德,欢迎回访!
[***.207.175.100]2024年04月28日 23时31分52秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
HDU-6214 Smallest Minimum Cut(最大流)
2019-04-30
Windows安装Scrapy库
2019-04-30
HDU-2586 How far away ?(LCA)
2019-04-30
hihocoder #1069 : 最近公共祖先·三(ST求LCA)
2019-04-30
hackerrank Lucky Numbers(扩展gcd/规律)
2019-04-30
HDU 5115 Dire Wolf(区间dp)
2019-04-30
Wannafly挑战赛1 A.Treepath(dfs)
2019-04-30
leetcode 10. Regular Expression Matching(dp)
2019-04-30
Recall, Precision, and Average Precision
2019-04-30
Vue 项目部署到阿里云服务器(Nginx 代理)
2019-04-30
CMake 学习
2019-04-30
《Effective STL》 读书笔记
2019-04-30
Windows10 使用 Visual Studio Code
2019-04-30
实习经历总结
2019-04-30
基于java的网络考试系统的设计与实现
2019-04-30
基于java的魂斗罗的设计
2019-04-30
基于java的网页内容管理
2019-04-30