maven
依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.4.1</version>
</dependency>
<dependency>
<groupId>com.zaxxer</groupId>
<artifactId>HikariCP</artifactId>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
在Springboot
启动类上加上开启缓存注解@EnableCaching
在待缓存的service
层方法上加上注解@Cacheable(cacheNames = {"emp"})
,如下:
@Cacheable(cacheNames = {"emp"})
public Employee getEmp(Integer id) {
System.out.println("查询" + id + "号员工");
Employee employee = employeeMapper.selectById(id);
return employee;
}
@Cacheable
共有以下属性:
cacheNames
/value
:指定缓存组件的名字
key
:缓存数据使用的key;可以用它来指定.默认是使用方法参数的值 1.方法的返回值
编写SpEL
: #id
;参数id的值 #a0
#p0
#root.args[0]
keyGenerator
: key
的生成器;可以自己指定key
的生成器的组件id
key
和keyGenerator
二选一使用即可
cacheManager
:指定缓存管理器;或者cacheResolver
指定获取解析器
condition
:设定符合条件的情况下才缓存
unless
:否定缓存,当unless
指定的条件为true
,方法的返回值就不会被缓存,可以获取到结果进行判断
sync
:是否使用异步模式
@Cacheable
注解详解CacheAutoConfiguration
org.springframework.boot.autoconfigure.cache.GenericCacheConfiguration
org.springframework.boot.autoconfigure.cache.JCacheCacheConfiguration
org.springframework.boot.autoconfigure.cache.EhCacheCacheConfiguration
org.springframework.boot.autoconfigure.cache.HazelcastCacheConfiguration
org.springframework.boot.autoconfigure.cache.InfinispanCacheConfiguratio
org.springframework.boot.autoconfigure.cache.CouchbaseCacheConfiguration
org.springframework.boot.autoconfigure.cache.RedisCacheConfiguration
org.springframework.boot.autoconfigure.cache.CaffeineCacheConfiguration
org.springframework.boot.autoconfigure.cache.SimpleCacheConfiguration
org.springframework.boot.autoconfigure.cache.NoOpCacheConfiguration
SimpleCacheConfiguration
默认生效CacheManager
:ConcurrentMapCacheManager
ConcurrentMapCacheManager
类型的缓存组件,他的作用将数据保存在ConcurrentMap
中? 标注的方法执行之前先来检查缓存中有没有这个数据,默认按照参数的值作为key去查询缓存,如果没有就运行方法并将结果放入缓存,以后再来调用就可以直接使用缓存中的数据
? 核心在于:
? 1.使用CacheManager
[ConcurrentMapCacheManager
]按照名字得到Cache
[ConcurrentMapCache
]组件
? 2.key
使用keyGenerator
生成的,默认是SimpleKeyGenerator
原文:https://www.cnblogs.com/toughtful/p/14315169.html