在程序中加上缓存, 是程序性能优化常用方法, 在springboot出现以前, 加缓存比较繁琐,近几日学习了下springboot中使用方法,发现相当简便,发个日志,记载下自已的一点总结.
目录:
一.添加cache所要做的准备工作
二.开启缓存注解
三. 常用的缓存注解
四. 总结
一.添加cache所要做的准备工作
1. 在pom.xml中引入cache开发需要的依赖包
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-cache</artifactId>
</dependency>
.......
</</dependencies>
二.开启缓存注解
在main函数上添加"@EnableCaching"注解,
@EnableCaching:开启基于注解的缓存
详细如下所示:
@MapperScan("com.dyjs.cache.dyspringboot.mapper")
@EnableCaching
@SpringBootApplication
public class DyspringbootNameApplication {
public static void main(String[] args) {
SpringApplication.run(DyspringbootNameApplication.class, args);
}
}
三.常用的缓存注解
当前我自已的例子使用的标签有: @Cacheable/@CachePut/@CacheEvict/Caching/@CacheConfig, 一般这些标签我们加在 Sevice层上
说明: 各标签相关的参数说明可在百度中搜一下就有了, 我就不再啰嗦了, 只给出最简单的程序说明
- @Cacheable 的作用 主要针对方法配置,能够根据方法的请求参数对其结果进行缓存, 先查询缓存,再查询db
@Cacheable(value = "emp")
public Employee getEmpById(Integer id) {
System.out.println("查询 " + id + "号员工");
Employee ret = employeeMapper.getEmpById(id);
if (ret == null) {
String msg = "没有查到 id=" + id + " 号员工";
System.out.println(msg);
}
return ret;
}
- @CachePut 的作用 主要针对方法配置,能够根据方法的请求参数对其结果进行缓存,和 @Cacheable 不同的是,它每次都会触发真实方法的调用
@CachePut(value = "emp", key = "#emp.id")
public Employee updateEmpById(Employee emp) {
System.out.println("更新 " + emp.getId() + "号员工, " + emp);
employeeMapper.updateEmp(emp);
return emp;
}
- @CacheEvict 的作用 主要针对方法配置, 能够根据一定的条件对缓存进行清空
public String clearCache() {
System.out.println("清除缓存");
return "清除缓存成功";
}
- @CacheConfig的作用,主要针对类配置 @Cacheable()里面都有一个value=“xxx”的属性,这显然如果方法多了,写起来也是挺累的,
@CacheConfig(cacheNames = "emp")
@Service
public class EmployeeService {
四. 总结
本例只是一个本地缓存,使用起来相当方便, 目前自已也是刚刚摸索到这里.