以编程方式访问portlet特定上下文中的bean

时间:2010-03-23 14:44:59

标签: java spring spring-mvc portlet

我有一个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?

由于

1 个答案:

答案 0 :(得分:1)

首先,您不能以正常方式将bean连接到控制器,而不是以编程方式检索它吗?

如果不这样做,您应该意识到getWebApplicationContext()获取对根webapp上下文的引用,而不是servlet应用程序上下文:

  

查找根WebApplicationContext   对于这个portlet应用程序,它是   通常是通过加载   ContextLoaderListener或   ContextLoaderServlet。

如果你的控制器需要一个自己上下文的句柄,那么它应该实现ApplicationContextAwareBeanFactoryAware,或者如果你想使用自动装配它可以使用@Autowired ApplicationContext