Spring Boot文档阅读笔记-EhCache的使用
发布日期:2021-06-30 10:47:04
浏览次数:2
分类:技术文章
本文共 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 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
逛到本站,mark一下
[***.202.152.39]2024年04月10日 03时20分20秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
Easyui动态添加控件无法渲染 $.parser.parse()无效
2019-04-30
Oracle反转倒置函数
2019-04-30
WebUpload 视频上传,支持多视频上传
2019-04-30
Js 校验“JSON”串格式aa:11;bb:22;
2019-04-30
让所有浏览器支持HTML5 video视频标签
2019-04-30
黑洞效果的粒子背景效果
2019-04-30
jQuery炫丽星空3d旋转星空
2019-04-30
原生js打印插件Print.js
2019-04-30
Oracle排序nulls last,nulls first ,nvl,case
2019-04-30
Oracle 查询类似 select top 的用法
2019-04-30
ORACLE WITH AS 用法
2019-04-30
JSTL中c:forEach循环里的值的substr操作及对String操作的常用API
2019-04-30
在foreach 里面调用js代码
2019-04-30
tomcat遇到断开的管道问题,一直还没查到问题
2019-04-30
清除陷入CLOSE_WAIT的进程
2019-04-30
Easyui comobox 下拉框必填校验
2019-04-30
JS汉字转拼音
2019-04-30
oracle接收键盘输入
2019-04-30