我有一个portlet应用程序。它是使用Spring框架IoC容器配置的。我正在使用org.springframework.web.context.ContextLoaderListener来加载我的上下文。
我在根级别有一个应用程序上下文(applicationContext.xml)和一个特定于portlet的上下文(MyPortlet-portlet.xml)。
我有一个org.springframework.web.portlet.DispatcherPortlet类型的portlet,它连接到Controller。在Controller中我想访问其中一个bean(例如id为“myBean”的bean),我已在我的portlet特定上下文中定义。我试过了
MyBean mybean = (MyBean)PortletApplicationContextUtils.getWebApplicationContext(
getPortletContext()).getBean("myBean")
但是,我的应用程序上下文中只有bean可用 - 我的portlet特定上下文中的所有bean都不可用。
有没有办法在我的portlet特定上下文中访问bean?
由于
答案 0 :(得分:1)
首先,您不能以正常方式将bean连接到控制器,而不是以编程方式检索它吗?
如果不这样做,您应该意识到getWebApplicationContext()
获取对根webapp上下文的引用,而不是servlet应用程序上下文:
查找根WebApplicationContext 对于这个portlet应用程序,它是 通常是通过加载 ContextLoaderListener或 ContextLoaderServlet。
如果你的控制器需要一个自己上下文的句柄,那么它应该实现ApplicationContextAware
或BeanFactoryAware
,或者如果你想使用自动装配它可以使用@Autowired ApplicationContext
。