Java 如何从servlet上下文而不是根上下文获取bean?

Java 如何从servlet上下文而不是根上下文获取bean?,java,spring,spring-mvc,Java,Spring,Spring Mvc,我有一个spring mvc应用程序,它通过在DispatcherServlet上下文配置中使用自动连接bean 现在有一种情况,我希望从非bean类访问服务bean,特别是RequestContextAwareTag实现 我可以访问根上下文中注册的bean,如下所示: ApplicationContext ctx = WebApplicationContextUtils.getWebApplicationContext( pageContext.getSession().getSe

我有一个spring mvc应用程序,它通过在
DispatcherServlet
上下文配置中使用
自动连接bean

现在有一种情况,我希望从非bean类访问服务bean,特别是
RequestContextAwareTag
实现

我可以访问根上下文中注册的bean,如下所示:

ApplicationContext ctx = WebApplicationContextUtils.getWebApplicationContext(
      pageContext.getSession().getServletContext());
MyService svc = ctx.getBean(MyService.class);
如果bean在dispatcher上下文中注册,我会得到一个
NoSuchBeanDefinitionException

如果可能的话,我希望我的
@Service
bean在根上下文中注册,而不拾取
@Controller
bean,然后在dispatcher上下文中拾取
@Controller
bean。
的问题是,它会同时处理这两个问题

如果这不可能,我需要一种访问dispatchers
ApplicationContext
的方法来检索服务bean


非常感谢您提供任何指导。

我已通过使用
排除过滤器
包括过滤器
拆分两个
组件扫描
配置来解决此问题

根上下文:


servlet上下文:



您是否尝试过在bean配置文件中实现ApplicationContextAware并实例化该类?不幸的是,对于标记来说,这是不可能的,因为它们是在使用标记的每个页面请求上创建的。root-context指的是在web xml中声明的带有标记“context param”的bean?