1

我已经按照这里的建议-> 如何在 web.xml 中将 HttpServlet 与 Spring Application Context 连接起来,以允许访问 servlet 中的 spring bean。它似乎适用于单例 bean,但是我需要在我的 handleRequest() 方法中访问请求范围的 bean。

照原样,请求范围的 bean 不能连接到 HttpRequestHandler,因为它是单例范围的,因此范围不匹配。

我尝试使我的 HttpRequestHandler 成为请求范围的 bean,但是这仍然只产生一个 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 回答