2017-08-17 108 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在控制器方法中