2

JSFセッション管理がどのように機能するかについての疑問

次のようにマネージドBeanを取得しました:

@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
    .
    .
    .
}

Bean が sessionScoped になったので、JSF は私の「userBO」オブジェクトもセッションに保持しますか? セッターとゲッターの両方を持つ変数は、セッションに保存される可能性が高いと思います。私が間違っている場合は修正してください。または、「userBO」を一時的として宣言して無視する必要がありますか?

4

1 に答える 1

2

セッションがリクエスト間でメモリに保持されている場合、それが参照する他のオブジェクトは保持され、ガベージ コレクションの対象にはなりません。への参照を設定するオブジェクトの内部をたどるタスクはありませんnull。管理プロパティは、Bean の作成時およびスコープに配置される前にのみ評価されます。

に設定userBOするtransientと、セッションがシリアル化された場合にのみ効果があります (ディスクへのパッシベーション、セッションのレプリケーションなどを介して)。

于 2012-03-24T11:01:05.560 に答える