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 (тоже должен быть один), он ведет себя так же. Я хочу иметь простую переменную сеанса с памятью сеанса.