我有一个 spring-mvc 应用程序,它通过<context:component-scan base-package="com.example.app" />
在DispatcherServlet
上下文配置中使用自动装配 bean。
我现在有一种情况,我希望从非 bean 类访问服务 bean,特别是RequestContextAwareTag
实现。
我可以访问在根上下文中注册的 bean,如下所示:
ApplicationContext ctx = WebApplicationContextUtils.getWebApplicationContext(
pageContext.getSession().getServletContext());
MyService svc = ctx.getBean(MyService.class);
如果 bean 在调度程序上下文中注册,我会得到一个NoSuchBeanDefinitionException
.
如果可能的话,我实际上更希望我的@Service
bean 在根上下文中注册而不@Controller
拾取 bean,然后@Controller
在调度程序上下文中拾取 bean。问题<context:component-scan/>
在于它两者兼而有之。
如果这不可能,我需要一种方法来访问调度ApplicationContext
程序以检索服务 bean。
任何指导将不胜感激。