У меня есть приложение spring-mvc, которое имеет автообученные бобы, используя <context:component-scan base-package="com.example.app" />
в конфигурации контекста DispatcherServlet
.Как я могу получить компонент из контекста сервлета вместо корневого контекста?
У меня теперь есть ситуация, когда я хочу получить доступ к сервису bean из класса non bean, в частности, к реализации RequestContextAwareTag
.
я могу получить доступ к фасоли, зарегистрированных в корневом контексте следующим образом:
ApplicationContext ctx = WebApplicationContextUtils.getWebApplicationContext(
pageContext.getSession().getServletContext());
MyService svc = ctx.getBean(MyService.class);
Если компонент зарегистрирован в диспетчерском контексте я получаю NoSuchBeanDefinitionException
.
Если это возможно, я бы на самом деле предпочитаю мои @Service
бобы должны быть зарегистрированы в корневом контексте без @Controller
бобов подхватили, а затем имею @Controller
бобы взял в диспетчерском контексте. Проблема с <context:component-scan/>
- это выбор обоих.
Если это невозможно, мне нужен способ получить доступ к диспетчерам ApplicationContext
для извлечения сервисных компонентов.
Любое руководство будет очень оценено.
Вы пробовали реализации ApplicationContextAware и инстанцировании этот класс в файле конфигурации боба? – shazin
К сожалению, это невозможно для тега, поскольку они созданы на каждой странице запроса тег используется. –