在Spring中,您具有一个根应用程序上下文,该上下文是
WebApplicationContextand至少一个子级
WebApplicationContext,尽管您可以将多个
DispatcherServlets与相应的WebApplicationContexts一起使用。这些是不同的上下文,尽管DispatcherServlet
WebApplicationContext是根应用程序上下文的子级。这意味着子上下文可以访问根应用程序上下文的所有bean,但是它们仍然是两个不同的上下文。
现在,使用相应的配置文件分别构造每个上下文。因此,如果仅
<context:component-scan />在一个程序包中指定另一个程序包
<mvc-annoation-driven />中的内容,则在构造一个上下文时,它将进行组件扫描,但由于未
<mvc-annoation-driven/>在同一配置文件中启用它们,因此它不会注册任何与控制器相关的注释。现在,在其他上下文中,启用了与控制器相关的注释,但从未扫描任何组件。这就是为什么找不到映射的原因。
这也是为什么在根应用程序上下文中配置多个DispatcherServlet将使用的通用配置,而在相应的Web应用程序上下文中配置与控制器相关的配置的原因。



