Spring为我们提供了几个注解来支持Spring Cache,用于简化在应用程序中实现缓存功能。
使用Spring缓存注解
-
@EnableCaching
:这是一个启用缓存支持的注解,通常放在 Spring 配置类上。它告诉 Spring 启用缓存功能,使你可以在应用程序中使用缓存注解。 -
@Cacheable
:这个注解用于指示 Spring 缓存方法的结果,可用在类或者方法上。当你在一个方法上添加@Cacheable
注解时,Spring 会首先检查【根据key(如果有)】缓存中是否已经有方法的结果。如果有,它会返回缓存的结果,而不执行方法的实际逻辑。没有则执行方法,并将方法的返回值作为value存入缓存。你可以指定缓存的名称、缓存键和其他属性。【存储值的形式都是{key:value}】属性 解释 key 缓存的key,可以为空,如果指定要按照SpEL表达式编写,如果不指定,则默认按照方法的所有参数进行组合。 value 缓存的名称,在Spring配置文件中定义,必须指定至少一个。 condition 缓存的条件,可以为空,使用SpEL编写,返回true或者false,只有为true才进行缓存。 不指定key时,key的生成策略:源自@[justry_deng]
-
@CachePut
:主要针对方法配置,能够根据方法的请求参数对其结果进行缓存,它与@Cacheable
不同的是,它每次都会执行方法,将返回值作为value放进缓存。属性值和同上。
-
@CacheEvict
:主要针对方法配置,能够根据一定的条件对缓存进行清空。属性 解释 allEntries 是否清空所有缓存内容,默认为false,如果指定为true,则方法调用后将立即清空所有缓存。 beforeInvocation 是否在方法执行前就清空,默认为false,如果指定为true,则在方法还没有执行的时候就清空缓存,缺省情况下,如果方法执行抛出异常,则不会清空缓存。 其它属性同上。
-
@Caching
:此注解可作为2、3、4任何一种使用。 -
@CacheConfig
:上面的注解都有value属性是必填项【也就是cacheNames】,如果使用的value值是一种的话就会很冗余,所以使用此注解来配置一些公共属性(如:cacheNames、keyGenerator等)例:@CacheConfig(cacheNames=“cacheName”),则下面的注解都不用指定cacheNames属性的值了。