Java Spring mvc - сессионные компоненты

Я хочу иметь сессионный компонент (DTO). Итак, я создал класс:

@Setter
@NoArgsConstructor
public class CurrentInfo {
   private Mappings currentMapping;
   private String redirectUri;
   @Getter private UserData currentUser;
}

И зарегистрируйте его как компонент с областью сеанса в весенней загрузке WebMvcConfig:

@Bean
@Scope(value = WebApplicationContext.SCOPE_SESSION, proxyMode = ScopedProxyMode.TARGET_CLASS)
public CurrentInfo currentInfo() {
    return new CurrentInfo();
}

Тогда в фильтре я получаю это:

@Resource(name = "currentInfo")
CurrentInfo currentInfo;

И установите некоторые значения:

   if(currentInfo.getCurrentUser() == null) {
        currentInfo.setCurrentUser(nonSocialMediaService.getCurrentUser());
        if(currentInfo.getCurrentUser() != null)
            logger.info("Current user -> " + currentInfo.getCurrentUser().getEmail());
    }

Я вижу в режиме отладки, что значение currentUser установлено для объекта currentInfo, но когда я делаю другой запрос, currentUser равен null. Я не понимаю почему? Я создал сессионный компонент, поэтому он должен быть одним (всегда одинаковым) в сеансе. Кроме того, когда я создаю обычный bean-компонент по умолчанию, так что это singelton (тоже должен быть один), он ведет себя так же. Я хочу иметь простую переменную сеанса с памятью сеанса.

0 ответов

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