セッション/リクエストスコープのBeanでSpring呼び出し 'destroy'メソッド

Springはセッション/リクエストスコープのBeanで 'destory'メソッドを呼び出すタイミングをどのように知っていますか(つまり、Beanがスコープから外れていることをどのように検出しますか)

私は、リクエスト/セッションリスナーを使用してこれらのイベントの通知を受ける場所を読んでいます。しかし、これらのリスナーはweb.xmlで定義する必要があり、Springリスターでこのようなリスナーを定義することについての言及はありません。それではどうやって動くの?

4

3 答え

春の文学でそのようなリスナーを定義することについての言及はありません

ああ、あります:

リクエスト session 、およびグローバルセッションレベル(WebスコープBean)でBeanのスコープをサポートするには、豆。[...]

     

Servlet 2.4以上のWebコンテナを使用する場合、Webアプリケーションweb.xmlファイルの宣言に次の javax.servlet.ServletRequestListener を追加する必要があります。 。]

投稿者: 4.5.4.1初期Web設定を参照してください。

また、SpringはプロトタイプでスコープされたBeanでdestroyを呼び出さない ということにも注意してください。

2
追加された
@ shrini1000: DispatcherServlet は、主にSpring MVCで使用されます。つまり、Spring MVCコントローラ内にいる場合、これらのリスナーは必要ありません。
追加された 著者 Tomasz Nurkiewicz,
DispatcherServletまたはDispatcherPortletを使用している場合は、「DispatcherServletおよびDispatcherPortletは、すでに関連するすべての状態を公開しています。どのようにして何が起こったのかについて詳しくは触れていません。
追加された 著者 shrini1000,

org.springframework.web.servlet.DispatcherServlet はそれを行います。自身のコードを使用します(例:これらのスコープ付きBeanをすべて登録するための org.springframework.web.context.request.RequestAttributes#registerDestructionCallback コールバック・リスト機能

2
追加された
@ shrini1000私は春2.5のソースコードを読んでいます。例えば。ここに: grepcode.com/file/repo1.maven.org/maven2/org.springframework‌ /…
追加された 著者 kan,
あなたはpl?関連するリンクを詳しく述べるか、言及してください。
追加された 著者 shrini1000,

セッションスコープBeanのインタフェース DisposableBean および InitializingBean を実装できます。

org.springframework.beans.factory.InitializingBean インタフェースでは、Beanのすべての必要なプロパティがコンテナによって設定された後で、Beanが初期化作業を実行できます。 InitializingBeanインターフェイスは、 afterPropertiesSet()という単一のメソッドを指定します。

org.springframework.beans.factory.DisposableBean インタフェースを実装すると、Beanを含むコンテナが破棄されたときにBeanがコールバックを取得できるようになります。 DisposableBeanインタフェースは、 destroy()という単一のメソッドを指定します。

Read more about it here: http://docs.spring.io/spring/docs/current/spring-framework-reference/html/beans.html#beans-factory-nature

1
追加された
DisposableBeanはセッションBeanのために私の上で動作しませんでした。 Docはシングルトン向けです
追加された 著者 ejaenv,