Есть ли способ, значение, определенное в одном главном контроллере, может быть доступно из всех других контроллеров spring mvc?

#spring #model-view-controller

Вопрос:

Что-то вроде этого:

 @Controller public class HomeController {  public String getCurrentUserDetails() {  String username = "testuser";  return username;  } }  @Controller public class DashboardController {   @RequestMapping("/admin/dashboard")  public ModelAndView showDashbard() {  ModelAndView modelAndView = new ModelAndView();  modelAndView.addObject("username", GET username FROM HOME CONTROLLER [HomeController's getCurrentUserDetails]);  modelAndView.setViewName("/admin/dashboard");  return modelAndView;  } }  @Controller public class ProfileController {   @RequestMapping("/admin/profile")  public ModelAndView showProfile() {  ModelAndView modelAndView = new ModelAndView();  modelAndView.addObject("username", GET username FROM HOME CONTROLLER [HomeController's getCurrentUserDetails]);  modelAndView.setViewName("/profile/dashboard");  return modelAndView;  } }  

Да, я знаю, что могу создать экземпляр HomeController и получить объект. Но создание объекта в каждом контроллере-это суета. Я просто хочу, чтобы значение одного контроллера было доступно во всех других контроллерах.

Комментарии:

1. Не просто не делай этого. Если вы хотите, чтобы переменная была доступна во всех моделях (в основном всегда), используйте @ControllerAdvice вместо нее либо a HandlerInterceptor , либо a.

2. Вы также можете использовать @Session компонент, обновлять его всякий getCurrentUserDetails() раз, когда он вызывается, и вводить его там, где вам это нужно. Если вы используете Spring Security, вы также можете получить учетные данные от SecurityContextHolder .