**@Cacheable:**标注在方法上,表示该方法的结果将会被缓存,下次调用时如果参数相同就可以直接返回缓存中的值,而不需要执行该方法。可以设置缓存的名称、key和过期时间等相关属性。但是需要注意如果只加了这个注解,在第二次查询的时候如果操作了数据库,例如增删改,缓存的内容仍是第一次查询的内容,不能实时更新
**@CachePut:**标注在方法上,表示该方法的结果将会被缓存,不同的是,每次调用该方法都会执行方法体,并将结果缓存起来,更新缓存中的值。也可以设置缓存的名称、key和过期时间等相关属性。这个注解使用的时候要有一个返回对象
**@CacheEvict:**标注在方法上,表示该方法用于从缓存中清除一个或多个条目,可以设置缓存的名称、key和清除模式等相关属性。该注解表示清除名为"allusers"的缓存中所有的缓存条目。其中,value属性指定了需要清除的缓存名称,可以为单个名称或多个名称数组;allEntries属性表示是否清除该缓存中的所有条目,默认为false,设置为true时将会清空该缓存。
这个注解如下图
当该方法被调用时,缓存管理器会根据value属性指定的名称查找相应的缓存并执行清除操作。如果设置了allEntries属性为true,则会清除该缓存中的所有条目;否则,只会清除与调用参数匹配的缓存条目。
**@EnableCaching:**标注在Java配置类上,表示启用缓存功能。