Java 如何从servlet上下文而不是根上下文获取bean?
我有一个spring mvc应用程序,它通过在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
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。
的问题是,它会同时处理这两个问题
如果这不可能,我需要一种访问dispatchersApplicationContext
的方法来检索服务bean
非常感谢您提供任何指导。我已通过使用
排除过滤器
和包括过滤器
拆分两个组件扫描
配置来解决此问题
根上下文:
servlet上下文:
您是否尝试过在bean配置文件中实现ApplicationContextAware并实例化该类?不幸的是,对于标记来说,这是不可能的,因为它们是在使用标记的每个页面请求上创建的。root-context指的是在web xml中声明的带有标记“context param”的bean?