Использование аннотаций Spring Caching на @RestController

  • Могу ли я использовать аннотации кэширования Spring поверх методов в RestController.
  • Поскольку весеннее кэширование - это кэш уровня обслуживания, но у меня есть случай, когда нет службы, поэтому я использую кэширование в контроллере.
  • Хорошо ли использовать кеширование в контроллере.
  • Я использую кафе в качестве основного тайника.
  • Я думаю, что любые проблемы с многопоточностью могут возникнуть при использовании такого кэширования на уровне контроллера.

1 ответ

Я бы не использовал кэшируемый ("что-то") в контроллере пружины, который включает аутентификацию пользователя, так как кэшируемый хранит только аргументы. Однако я не вижу никаких проблем, если вам не нужно кэшировать в зависимости от пользователя или какой-либо информации заголовка запроса.

Например, в следующем примере, когда вы снова входите в систему:

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

Опция, которую вы можете использовать в случае, если вы хотите кэшировать в зависимости от заголовка, - добавить @RequestHeader(value="key") String val в методе контроллера

Другие вопросы по тегам