使用ContextLoaderListener和DelegatingFilterProxy的多个Spring上下文“没有bean命名的异常”

时间:2014-11-15 19:42:11

标签: java spring spring-mvc servlets intellij-idea

我在使用ContextLoaderListener在我的web.xml中加载多个上下文时遇到了问题

<context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>
        WEB-INF/dao-context.xml
        WEB-INF/service-context.xml
        WEB-INF/security-context.xml
    </param-value>
</context-param>

<filter>
    <filter-name>jsonpCallbackFilter</filter-name>
    <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
</filter>

<filter-mapping>
    <filter-name>jsonpCallbackFilter</filter-name>
    <url-pattern>*.json</url-pattern>
</filter-mapping>

过滤器一直给我一个“没有名为'jsonpCallbackFilter'的bean被定义”,类似于this question。如果我将所有配置放在dispatcher-servlet.xml中,并且由于某种原因,另一个问题的解决方案对我不起作用,则不会给我错误。

我目前的解决方案是导入调度程序-servlet 2中的所有内容:

<import resource="dao-context.xml" />
<import resource="service-context.xml" />

from this solution

有人知道为什么会这样,上面没有?是O.K.通过servlet.xml导入它们而只留下web.xml?我正在使用IntelliJ IDEA。

1 个答案:

答案 0 :(得分:0)

Spring处理application-context.xml*-servlet.xml文件的方式有所不同。

application-context.xml用于常规配置,例如dataSource,annotationDriven等

*-servlet.xml用于配置您的servlet,例如视图,模板,例如jsp。

注意:*-servlet.xml中的bean可以引用application-context.xml中的bean,但不能引用其他方式。