問題

SpringでWebアプリケーションを開発するには、 ”

request

“のスコープでBeanを作成します。

@Component
@Scope("request")
public class PaymentService {

    @Autowired
    UserBo userBo;
   //...

しかし、次のエラーメッセージが表示されますか?

Caused by: java.lang.IllegalStateException: No thread-bound request found:
    Are you referring to request attributes outside of an actual web request,
    or processing a request outside of the originally receiving thread?
    If you are actually operating within a web request and still receive this message,
    your code is probably running outside of DispatcherServlet/DispatcherPortlet:
    In this case,
        use RequestContextListener or RequestContextFilter to expose the current request.
   //... 28 more

解決策

それを修正するには、http://static.springsource.org/spring/docs/3.0.x/api/org/springframework/web/context/request/RequestContextListener.html[RequestContextListener]リスナーを `web.xml`ファイルに登録します。


File:web.xml

<web-app ...>
   <listener>
    <listener-class>
        org.springframework.web.context.request.RequestContextListener
    </listener-class>
   </listener>
</web-app>