【发布时间】:2014-04-11 23:43:13
【问题描述】:
我创建了一个使用一些 Autowired 字段的 servlet 过滤器。为了使它工作,我在 web.xml 中将其声明为 DelegatingFilterProxy 。在这个过滤器之前,我的整个弹簧配置在dispatcher-servlet.xml,但由于某种原因,为这个过滤器声明 bean 在调度程序 servlet 中不起作用。所以,我在applicationContext.xml 中声明了它。然后它开始工作,但过滤器内的 Autwired 字段随后抛出null。为了解决这个问题,我搬家了
<context:component-scan base-package="com.myproj.abc" />
到 applicationContext,过滤器开始工作,但我的控制器类定义的 url 路径不再映射。所以我还需要在 applicationContext 中拉出以下两行
<mvc:default-servlet-handler />
<mvc:annotation-driven />
这解决了这个问题。但我想知道这是所有这些代码的正确位置吗?因为 Spring 安全性以及静态资源和视图映射,所有这些代码都在调度程序中。在我的另一个项目中,我遇到了同样的问题,我确实喜欢这样做,仅在 applicationContext 中声明以下行
<context:component-scan base-package="com.myproj.abc" />
在 dispatcher-servlet 中,我将组件扫描包更改为仅控制器,并将所有其他代码保留在那里(在 dispatcher 中)
<context:component-scan base-package="com.myproj.abc.controller" />
谁能告诉我这个困惑。
【问题讨论】:
标签: spring spring-mvc