Сохраняет ли JSF мой вспомогательный класс, на который ссылается мой ManageBean в сеансе? - PullRequest
2 голосов
/ 24 марта 2012

Просто сомнение относительно того, как работает управление сессиями JSF

Я получил управляемый бин как:

@ManagedBean(name="loginBean")
@SessionScoped
public class LoginBean implements Serializable
{

        private String userName;
        //getter and setter

        private String password;
        //getter and setter

        // Getting through spring injection
        @ManagedProperty(value="#{userBO}")
        private UserBO userBO;
        //setter method

        public fetchUserDetails(){
        User  user = userBO.getUSer(this.userName);
        //some processing
        }
    // more methods
    .
    .
    .
}

Так что теперь, так как бин является sessionScoped, JSF будет хранить мой объект "userBO"сеанс тоже?Я считаю, что переменные как с установщиками, так и с получателями, скорее всего, будут храниться в сеансе.Поправь меня, если я ошибаюсь.Или я должен объявить "userBO" как переходный, чтобы он игнорировался?

1 Ответ

2 голосов
/ 24 марта 2012

Если ваш сеанс сохраняется в памяти между запросами, любые другие объекты, на которые он ссылается, будут сохранены и не будут пригодны для сбора мусора. Нет задачи, которая обходит внутренние установки объекта, ссылаясь на null. Управляемые свойства оцениваются только при создании компонента и до его помещения в область действия.

Установка userBO в transient будет иметь эффект, только если сеанс будет сериализован (через пассивацию на диск, через репликацию сеанса и т. Д.)

...