簡體   English   中英

春天如何在應用程序上下文文件中配置HttpServletRequest

[英]how to configure HttpServletRequest in application context file in spring

我無法在我的Spring環境中的應用程序上下文中配置HttpServletRequest

以下是我嘗試的代碼:

<bean id="request" class="javax.servlet.http.HttpServletRequest">
 </bean>

<bean id="rwEloquaControllerService" class="com.rightwave.eloqua.RWEloquaControllerService">  
<property name="request" ref="request" />
</bean>

RWEloquaControllerService的getter setter類代碼:

    HttpServletRequest request;

    public HttpServletRequest getRequest() {
        return request;
    }
    public void setRequest(HttpServletRequest request) {
        this.request = request;
    }

但是,當我啟動服務器時,由於應用程序上下文錯誤而發生了異常。 誰能告訴我如何在應用程序上下文中配置HttpServletRequest對象。

首先讓我們討論一些基本概念。

  1. 據我所知,不可能在應用程序上下文中實例化接口。 您如何在沒有實際實現的情況下新建接口? 不可能。

  2. 您在應用程序上下文中編寫bean,以便Spring可以實例化它們。 但是,所需的請求是由servlet容器生成的。 它不是由Spring創建的。

如果要在控制器中注入請求,只需在控制器中添加以下代碼。 Spring不會創建請求,Spring只是從servlet容器中獲取請求,然后將其注入到控制器中。

private @Autowired HttpServletRequest request;

根據您的評論:

我不能在應用程序上下文中實例化接口。 基本上,我需要請求對象來獲取上下文,然后是springContext然后是一個bean。 所以首先我需要請求

只需使您的控制器實現org.springframework.context.ApplicationContextAware 您將必須添加public void setApplicationContext(ApplicationContext applicationContext) throws BeansException方法,可使用該方法將提供的applicationContext設置為成員變量。

然后,您可以使用它查詢上下文以管理Spring管理的bean。

注意: setApplicationContext方法將在創建控制器之后但在調用afterPropertiesSet (如果實現了InitializingBean )由Spring調用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM