springboot整合弹簧@Cache和复述

  

春季基于注解的缓存
对于缓存声明,春天的缓存提供了一组java注解:

  

@Cacheable:触发缓存写入.@CacheEvict:触发缓存清除。
br/> @CacheEvict:触发缓存清除。
br/> @Caching:重新组合要应用于方法的多个缓存操作。
@Cacheable注解

  

顾名思义,@Cacheable可以用来进行缓存的写入,将结果存储在缓存中,以便于在后续调用的时候可以直接返回缓存中的值,而不必再执行实际的方法。最简单的使用方式,注解名称=缓存名称,使用例子如下:

  
 <代码> @Cacheable(“书”)
  公共图书findBook (ISBN ISBN){…}  
  

个方法可以对应两个缓存名称,如下:

  
 <代码> @Cacheable({“书”,“isbn”})
  公共图书findBook (ISBN ISBN) {…} 
  

@Cacheable的缓存名称是可以配置动态参数的,比如选择传入的参数,如下:(以下示例是使用?声明,如果您不熟悉?,可以阅读Spring表达式语言)

  
 <代码> @Cacheable (cacheNames=笆椤?关键=" # isbn ")
  公共图书findBook (ISBN ISBN,布尔checkWarehouse,布尔includeUsed)
  
  @Cacheable (cacheNames=笆椤?关键=" # isbn.rawNumber ")
  公共图书findBook (ISBN ISBN,布尔checkWarehouse,布尔includeUsed)
  
  @Cacheable (cacheNames="书",关键=癟 (someType) .hash (# isbn)”)
  公共图书findBook (ISBN ISBN,布尔checkWarehouse,布尔includeUsed)  
  

@Cacheable还可以设置根据条件判断是否需要缓存

  

条件:取决于给定的参数是否满足条件
除非:取决于返回值是否满足条件
以下是一个简单的例子:
@Cacheable (cacheNames=癰ook"条件=? name.length () & lt;32“)
公共图书findBook(字符串名称)

  
 <代码> @Cacheable (cacheNames=笆椤?条件=" # name.length () & lt;32”,除非=" # result.hardback”)
  公共图书findBook(字符串名称)
  
  @Cacheable还可以设置:keyGenerator(指定关键自动生成方法),缓存管理器(指定使用的缓存管理),cacheResolver(指定使用缓存的解析器)等,这些参数比较适合全局设置,这里就不多做介绍了。 
  

@CachePut注解   

@CachePut:当需要更新缓存而不干扰方法的运行时,可以使用该注解。也就是说,始终执行该方法,并将结果放入缓存,注解参数与@Cacheable相同。以下是一个简单的例子:

  
 <代码> @CachePut (cacheNames=笆椤?关键=" # isbn ")
  公共图书updateBook (ISBN ISBN BookDescriptor描述符) 
  

通常强烈建议不要对同一方法同时使用@CachePut和@Cacheable注解,因为它们具有不同的行为。可能会产生不可思议的错误哦。

  

@CacheEvict注解   

@CacheEvict:删除缓存的注解,这对删除旧的数据和无用的数据是非常有用的。这里还多了一个参数(allEntries),设置allEntries=true时,可以对整个条目进行批量删除。以下是个简单的例子:

  
 <代码> @CacheEvict (cacheNames=笆椤?
  公共空间loadBooks (InputStream批)//对cacheNames进行批量删除
  @CacheEvict (cacheNames=笆椤?allEntries=true)
  公共空loadBooks (InputStream批) 
  

@Caching注解   

@Caching:在使用缓存的时候,有可能会同时进行更新和删除,会出现同时使用多个注解的情况。而@Caching可以实现。以下是个简单的例子:

  
 <代码> @Caching(驱逐={@CacheEvict(“主”),@CacheEvict (cacheNames=按我?关键=# p0)})
  公共图书importBooks(字符串,日期日期) 
  

@CacheConfig注解   

@CacheConfig:缓存提供了许多的注解选项,但是有一些公用的操作,我们可以使用@CacheConfig在类上进行全局设置。以下是个简单的例子:

  
 <代码> @CacheConfig(“书”)
  公共类BookRepositoryImpl实现BookRepository {
  
  @Cacheable
  公共图书findBook (ISBN ISBN) {…}
  } 
  

可以共享缓存名称,统一配置KeyGenerator,缓存管理器,CacheResolver。

  

实例
来看看我们在springboot中怎么使用复述来作为缓存吧。

  

为春天缓存配置复述,作为缓存

  

1。在pom.xml引入复述,依赖

  
 <代码> & lt; dependency>
  & lt; groupId> org.springframework.boot
  & lt; artifactId> spring-boot-starter-data-redis
  & lt;/dependency> 

springboot整合弹簧@Cache和复述