0

我有一个web.xml像这样的监听器类:

<listener>
    <listener-class>com.datx.monitoring.model.MonitoringHttpSessionListener</listener-class>
</listener>

对于这个类,我定义了一个bean这样的:

<bean id="monitoringHttpSessionListener"
    class="com.datx.monitoring.model.MonitoringHttpSessionListener" autowire="byName"/>

但是这个bean是不能用其他beans的。每次调用此类时,它都有空属性

这个类与另一个工作正常的类完全相同。唯一的区别是,这个类被用作 alistener而另一个不是。这是为什么?

4

1 回答 1

1

这有一个简单的原因:有两个 bean。一个由您的 Web 容器(使用web.xml)创建,另一个由 Spring(使用您的 bean 定义)创建。Web 容器和 Spring 对彼此一无所知。

您需要做的是创建一个普通的侦听器,它可以获取应用程序上下文

WebApplicationContextUtils.getWebApplicationContext(session.getServletContext());

这将允许您查找 bean。现在您可以定义过滤器可以修改的 bean。

注意:你会想要给这个 beanrequest范围,否则会有混乱。

于 2012-08-27T07:55:01.767 回答