Spring引入了对Cache的支持,其使用方法可以作用在方法上或者类上,标记在类上意为该类下所有方法都支持缓存,作用在单一方法上同上。对于支持缓存的方法,Spring会在方法调用之后将return值缓存起来,如果下次使用同样的参数执行此方法,就可以直接从缓存中获取结果,在缓存返回值时使用键值对存储,值为方法的返回结果,键有两种定义策略,自定义策略是指我们可以使用Spring的EL表达式来指定key,使用方法可以直接使用“#参数名”或者“#p参数index”
实例:@Cacheable(value={"users"},key="#user.name",condition="#user.id%2==0")
condition属性用于控制缓存的结果是否为这个方法所有的返回结果,默认为空,缓存所有结果。以上为只有user的id为偶数时缓存。
@CachePut("users")
此注解每次都会对返回值进行缓存,不进行检查缓存里是否有相同的key。
@CacheEvict(value="users",Condition="#user.id%3==0",allEntries=true,beforeInvocation=true)
当指定allEntries为true时,Spring缓存会忽略指定的key。此属性可用于清除缓存下的所有元素。
当指定beforeInvocation为true时,spring会在调用此方法之前清除缓存中指定的元素。不会因为方法抛出异常没有返回值没有触发清除的操作。