繁体   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