2017-02-20 9 views
1

からBeanをスコープ春の要求は、私は、リソースのオブジェクトプールを持つオブジェクトプール

これは問題なく動作します。しかし、手動でPooledResourceを要求し、finally句を忘れることを余儀なくされると、私は緊張します。私は次のようにコントローラを実装したいと思います:

@Path("test") 
public class TestController { 
    @Autowired 
    private PooledResource resource; 

    @GET 
    Response get() { 
     ... 
    } 

}ここ

は、PooledResource代わりに管理するプール、注入されます。この注入はリクエストスコープにする必要があります。また、リクエストのファイナライズ後にリソースをプールに戻す必要があります。これは重要ですが、最終的にリソースが足りなくなります。

これはSpringでも可能ですか?私はFactoryBeanで遊んでいますが、これはBeanを返すことをサポートしていないようです。

答えて

2

HandlerInterceptorを実装し、リクエストスコープのBeanを挿入します。 preHandleが呼び出されたら、正しい値でBeanを設定します。 afterCompletionが呼び出されたら、もう一度クリーンアップしてください。

他のコンポーネントに素晴らしいPooledResourceを注入するには、これをBean Factoryと組み合わせる必要があります。

Factoryは、基本的にHandlerInterceptorで使用したのと同じオブジェクトを挿入し、PooledResourceを作成します(または返すだけです)。

+0

ありがとうございます。 'HandlerInterceptor'はJAX-RS/Jerseyと組み合わせて動作しますか? –

+0

私はそれについてはわかりませんが、もしあなたが下位に行くことができ、あなたが要求/応答のためにインストールできるフィルターのいくつかを探すことができます。 – john16384

関連する問題