2012-11-05 49 views
1

我按照here -> How to connect HttpServlet with Spring Application Context in web.xml的建議允許訪問servlet中的spring bean。它似乎對singleton bean正常工作,但我需要訪問我的handleRequest()方法中的請求範圍的bean。在Spring HttpRequestHandler中請求作用域bean

原樣,請求範圍的bean無法連接到HttpRequestHandler,因爲它是單例作用域,因此存在範圍的不匹配。

我試着讓我的HttpRequestHandler成爲一個請求範圍的bean,但是這仍然只導致了一個bean。即不爲每個請求注入新的實例。我只能假設org.springframework.web.context.support.HttpRequestHandlerServlet使用的機制不允許每個請求都有一個新的實例。

我的解決方法是直接從handleRequest方法內的應用程序上下文獲取bean,例如,

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

但理想情況下,我只想爲請求範圍的bean注入我。

有什麼建議嗎?

回答

1

爲了注入一個 「請求」 範圍或 「會話」 範圍豆成一個單例的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> 

希望這個作品。

相關問題