【问题标题】:Spring cache on create new item创建新项目时的弹簧缓存
【发布时间】:2018-11-26 18:00:05
【问题描述】:

我正在使用项目 ID 来识别缓存数据,如下所示:

@CachePut(value = "users", key = "#p0.id")
@RequestMapping(value = "/user", method = RequestMethod.PUT)
public User updateUser(@RequestBody User user);

函数create new Item 创建后返回item ID。创建新项目后如何将项目保存到缓存中?

@Cacheable(value = "users", key = "???")
@RequestMapping(value = "/user", method = RequestMethod.POST)
public User createUser(@RequestBody User user);

【问题讨论】:

    标签: java spring caching


    【解决方案1】:

    使用@CachePut

    @CachePut(value = "users", key = "#result.id"")
    @RequestMapping(value = "/user", method = RequestMethod.POST)
    public User createUser(@RequestBody User user);
    

    【讨论】:

      【解决方案2】:

      我建议创建服务类并将所有这些方法放入其中。 同样在 store 方法(在您的情况下为 createUser 方法)您应该放置注释 @CachePut(value = "user", key = "#user.id")

      类似这样的:

      @CachePut(value = "user", key = "#user.id")
      public User createUser(User user) { 
         // store user in db...
      }
      

      试试上面的代码。

      【讨论】:

        【解决方案3】:

        使用@CachePut 创建新项目。

        您可以参考这里了解@CachePut 和@Cacheable 之间的区别: Spring Cacheable vs CachePut?

        【讨论】:

          猜你喜欢
          • 2011-07-28
          • 2012-07-07
          • 1970-01-01
          • 1970-01-01
          • 2014-03-03
          • 2017-04-25
          • 1970-01-01
          • 1970-01-01
          • 2017-04-20
          相关资源
          最近更新 更多