1

を実装するアプリケーションにカスタム スコープを作成しましたorg.springframework.beans.factory.config.Scope

この一環として、PreDestroy メソッドがカスタム スコープ Bean で正しく呼び出されるように、以下のメソッドを実装する必要があります。

public void registerDestructionCallback(String name, Runnable callback) {
}

メソッドの Javadoc はそれほど明確ではなく、そのメソッドにどのコードを記述すればよいか迷っているようです。

誰か助けてくれませんか?

4

1 に答える 1

4

カスタム スコープが実際に何を行うか、およびこのスコープを DisposableBean、destroy-method を持つ Bean、および DestructionAwareBeanPostProcessor に使用しているかどうかによって異なります。

最も単純なケースでは、何もする必要がないか、コールバックがサポートされていないという警告をログに記録するだけです。

より複雑なケースでは、通常のカスタム スコープのライフ サイクルの外にあるオブジェクトの破棄を処理する必要があります。例えば。オブジェクトがその有効期限などに基づいて破棄されたとき (Scope.remove(String name)メソッドの明示的な呼び出しとは異なります)。

たとえば、セッション スコープの Bean の場合、このコールバックはHttpSessionListener.sessionDestroyed(..)イベントに接続されます。org.springframework.web.context.request.SessionScopeクラスのソースを参照してください。

于 2012-11-26T16:34:24.663 に答える