借助RyanStewart的出色回答,我得以弄清楚(至少针对我的特定问题)。
简而言之,
ContextLoaderListener(通常来自applicationContext.xml)加载的上下文是
DispatcherServlet(通常来自
*-servlet.xml)加载的上下文的父级。如果
@Async在两个上下文中都具有声明为
/component-scanned的方法的bean,则子上下文(
DispatcherServlet)中的版本将覆盖父上下文(
ContextLoaderListener)中的版本。我通过从组件扫描中排除该组件来验证了这一点
*-servlet.xml-现在可以正常工作了。



