Использование аннотаций 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 в методе контроллера