缓存的主键的生成策略

键的生成策略

键的生成策略有两种,一种是默认策略,一种是自定义策略。

默认策略

默认的key生成策略是通过KeyGenerator生成的,其默认策略如下:
- 如果方法没有参数,则使用0作为key。
- 如果只有一个参数的话则使用该参数作为key。
- 如果参数多余一个的话则使用所有参数的hashCode作为key。

如果我们需要指定自己的默认策略的话,那么我们可以实现自己的KeyGenerator,然后指定我们的Spring Cache使用的KeyGenerator为我们自己定义的KeyGenerator。
使用基于注解的配置时是通过cache:annotation-driven指定的.

““xml


““
而使用基于XML配置时是通过cache:advice来指定的。

 <cache:advice id="cacheAdvice" cache-manager="cacheManager" key-generator="userKeyGenerator">
   cache:advice>

自定义策略

属性名称 描述 示例
methodName 当前方法名 root.methodName
method 当前方法 root.method.name
target 当前被调用的对象 root.target
targetClass 当前被调用的对象的class root.targetClass
args 当前方法参数组成的数组 root.args[0]
caches 当前被调用的方法使用的Cache root.caches[0].name
@Cacheable(value="users", key="#id")
   public User find(Integer id) {
      return null;
   }

   @Cacheable(value="users", key="#p0")
   public User find(Integer id) {
      return null;
   }

   @Cacheable(value="users", key="#user.id")
   public User find(User user) {
      return null;
   }

   @Cacheable(value="users", key="#p0.id")
   public User find(User user) {
      return null;
   }

你可能感兴趣的:(Spring的NoSQL技术)