Spring MVC的上下文Hiearchy(Spring MVC Context Hiearchy

2019-10-18 04:14发布

这可能是一个简单的问题,但我有一些困难,了解Spring MVC中如何处理多个hiearchies是经常出现在MVC应用程序。

在我的web.xml我定义为我的理解上下文的是,这根上下文

<context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>
    /WEB-INF/spring/root-context.xml
    </param-value>
</context-param>

我也有在该servlet水平,这我明白要继承从上方根上下文豆类定义的上下文。

<servlet>
        <servlet-name>appServlet</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>/WEB-INF/spring/appServlet/servlet-context.xml</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
</servlet>

为了让我的应用程序的工作,我已经中根的context.xml以下

<context:component-scan base-package="com.demo.service" />

在servlet的context.xml中以下

<annotation-driven />
<context:component-scan base-package="com.demo.controller" />

我的问题是,如果我改变组件扫描到只有root背景下,并从servlet上下文删除的组件扫描时,为什么应用程序拒绝加载?

<context:component-scan base-package="com.demo" />

Annotation-specified bean name 'adminController' for bean class [com.demo.controller.AdminController] conflicts with existing, non-compatible bean definition of same name 

Answer 1:

因为servlet上下文不会找到的任何控制器,根上下文和servlet的上下文中分别装载



文章来源: Spring MVC Context Hiearchy