ModelAndView Thread-Saftey Spring Boot веб-приложение
Является ли использование ModelAndView таким образом "потокобезопасным"? Компонент UserToken, передаваемый конструктору, имеет сессионную область и прокси, поэтому каждый пользователь должен иметь доступ к своему собственному токену, верно? Или использует один и тот же ModelAndView для всех запросов, каждый раз перезаписывая UserToken для каждого пользователя, что, возможно, приводит к тому, что пользователь A видит токен пользователя B?
@Controller
public class ViewController {
private final UserToken userToken;
private final ModelAndView mav;
@Value("${redirect.url}")
String redirectUrl;
@Autowired
public ViewController(UserToken userToken) {
this.userToken = userToken;
this.mav = new ModelAndView();
}
@RequestMapping("/")
public ModelAndView defaultView() {
return getModelAndView("home");
}
@RequestMapping("/entryPoint")
public ModelAndView accessDenied(@RequestParam(required=false) String token) {
userToken.deserialize(token);
mav.addObject("userToken", userToken);
return getModelAndView("redirect:/");
}
/**
* Handle redirect if the userToken is invalid
* @param viewName The view to map
* @return the ModelAndView
*/
private ModelAndView getModelAndView(String viewName) {
if (userToken.isValid()) {
mav.setViewName(viewName);
} else {
mav.setViewName("redirect:" + redirectUrl);
}
return mav;
}
}
Даже не уверен, как проверить безопасность потоков в этом сценарии, поэтому любые знания будут оценены (методы, инструменты и т. Д.).