2017-08-17 90 views
2
  • 我可以在RestController中的方法之上使用Spring缓存注释吗?
  • 由于春季缓存是一个服务级缓存,但我有一个案件没有服务,所以我在控制器中使用缓存。
  • 在控制器中使用缓存是否好用。
  • 我使用cafeine作为我的底层缓存。
  • 我在想,任何多线程问题可能发生在控制器级使用像这样的缓存。
+0

为什么不提取任何您尝试缓存到服务层的内容?你不应该在Spring中混合使用这些层,因为它增加了不必要的复杂性。 –

回答

2

我不会在涉及用户认证的spring控制器中使用cacheable(“something”),因为cacheable只保留参数。但是,如果您不需要缓存,则不会看到任何问题,具体取决于用户或任何请求标头信息。

例如,在下面的例子中,当你所得到的用户重新登录:

 @RequestMapping(...) 
     @Cacheable("something") 
     public T analyze(@RequestParam(value = "text") String text) { 
     .... 
      Object userObj = 
     SecurityContextHolder.getContext().getAuthentication().getPrincipal(); 
     .... 
     } 

你可能在的情况选择要缓存取决于头部被添加@RequestHeader( value =“key”)字符串val在控制器方法中