我遵循了建议here -> How to connect HttpServlet with Spring Application Context in web.xml以允许访问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。
有什么建议吗?
答案 0 :(得分: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>
希望这有效。