在根应用程序上下文中声明的Spring @Controllers


问题内容

Spring Web应用程序具有两个上下文-Web上下文(子上下文)和根上下文(父上下文)。如果@Controllerdispatcher- servlet.xml(Web上下文)中定义了bean,那么一切都很好。

但是,如果在父上下文(applicationContext.xml)中定义了控制器bean ,则无法识别控制器-
即未配置其映射,因此,当您尝试打开/foo/bar在此类控制器中定义的控制器时,找不到路径。

问题是:无论在何处定义Bean,如何使控制器映射都被解析。

PS:我知道我可以将声明移到子上下文中,但是出于这个问题范围之外的原因,我不想这样做。


问题答案:

DefaultAnnotationHandlerMapping具有detectHandlersInAncestorContexts能够实现所需行为的属性。