如何在Spring中在应用程序上下文文件中配置HttpServletRequest

时间:2016-04-19 10:05:11

标签: java spring spring-mvc

我无法在弹簧环境中的应用程序上下文中配置HttpServletRequest

下面是我试过的代码:

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

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

RWEloquaControllerService类代码:

    HttpServletRequest request;

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

但是当我启动服务器时,由于应用程序上下文错误而发生异常。任何人都可以告诉我如何在应用程序上下文中配置HttpServletRequest对象。

2 个答案:

答案 0 :(得分:0)

首先让我们谈谈一些基本概念。

  1. 在我的知识中,无法在应用程序上下文中实例化接口。如何在不给它真正实现的情况下新建一个界面?这是不可能的。

  2. 您在应用程序上下文中编写bean,以便Spring可以实例化它们。但是,您需要的请求是由servlet容器生成的。它不是由Spring创建的。

  3. 如果要在控制器中注入请求,只需在控制器中添加以下代码即可。 Spring不会创建请求,Spring只是从servlet容器中获取它,然后将其注入控制器。

    private @Autowired HttpServletRequest request;
    

答案 1 :(得分:0)

根据您的评论:

  

我是否可以在应用程序上下文中实例化接口。基本上,我需要请求对象来获取上下文,然后是springContext,然后获取一个bean。所以在第一点我需要请求

只需让控制器实现org.springframework.context.ApplicationContextAware即可。您必须添加public void setApplicationContext(ApplicationContext applicationContext) throws BeansException方法,您可以使用该方法将提供的applicationContext设置为成员变量。

然后,您可以使用它来查询spring-managed bean的上下文。

注意:在创建控制器之后但在调用setApplicationContext之前(如果实现afterPropertiesSet),Spring将调用InitializingBean方法。