コンテキスト構成<context:component-scan base-package="com.example.app" />
内で使用して自動配線された Bean を持つ spring-mvc アプリケーションがあります。DispatcherServlet
非 Bean クラス、具体的には実装からサービス Bean にアクセスしたい状況がありますRequestContextAwareTag
。
次のように、ルート コンテキストに登録された Bean にアクセスできます。
ApplicationContext ctx = WebApplicationContextUtils.getWebApplicationContext(
pageContext.getSession().getServletContext());
MyService svc = ctx.getBean(MyService.class);
Bean がディスパッチャ コンテキストに登録されている場合、NoSuchBeanDefinitionException
.
可能であれば、Bean を取得@Service
せずにルート コンテキストに登録してから、ディスパッチャー コンテキストで Bean を取得することを実際に希望します。問題は、両方をピックアップすることです。@Controller
@Controller
<context:component-scan/>
これが不可能な場合は、ディスパッチャにアクセスしApplicationContext
てサービス Bean を取得する方法が必要です。
どんなガイダンスでも大歓迎です。