1

ここの提案に従いました-> HttpServletをweb.xmlのSpringアプリケーションコンテキストに接続して、サーブレットのSpring Beanへのアクセスを許可する方法。シングルトン Bean では問題なく動作するようですが、handleRequest() メソッドでリクエスト スコープの Bean にアクセスする必要があります。

現状では、リクエスト スコープ Bean を HttpRequestHandler に接続することはできません。シングルトン スコープであり、スコープの不一致があるためです。

HttpRequestHandler をリクエスト スコープの Bean にしようとしましたが、それでも 1 つの Bean しか作成されませんでした。つまり、リクエストごとに新しいインスタンスが挿入されませんでした。どういうわけか、org.springframework.web.context.support.HttpRequestHandlerServlet で採用されているメカニズムが、リクエストごとに新しいインスタンスを許可していないと推測できます。

私の回避策は、handleRequest メソッド内のアプリケーション コンテキストから直接 Bean を取得することです。

Calendar localNow = (Calendar) applicationContext.getBean("now");

しかし、理想的には、リクエストスコープのBeanを注入してもらいたいだけです。

助言がありますか?

4

1 に答える 1

1

「リクエスト」スコープまたは「セッション」スコープ Bean をシングルトン Bean に注入するには、次を使用します。<aop:scoped-proxy/>

例えば:

<bean id="singletonClass" class="com.app.SingletonClass">
<property name="requestScopeInstance" ref="requestScopeInstance">
</bean>

<bean id="requestScopeInstance" class="com.app.RequestScopeInstance scope="session">
<aop:scoped-proxy/>
</bean>

これがうまくいくことを願っています。

于 2012-11-05T06:49:28.200 に答える