这可能是一个简单的问题,但我很难理解 Spring MVC 如何处理 MVC 应用程序中经常出现的多个层次结构。
在我的 web.xml 我有一个上下文定义为我的理解是这是根上下文
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>
/WEB-INF/spring/root-context.xml
</param-value>
</context-param>
我还在 servlet 级别定义了一个上下文,我理解它应该从上面的根上下文中继承 bes。
<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>
为了使我的应用程序正常工作,我在 root-context.xml 中有以下内容
<context:component-scan base-package="com.demo.service" />
以及 servlet-context.xml 中的以下内容
<annotation-driven />
<context:component-scan base-package="com.demo.controller" />
我的问题是,如果我仅在根上下文中将组件扫描更改为以下内容并从 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