I have a portlet application. It is configured using Spring framework IoC container. I am using org.springframework.web.context.ContextLoaderListener to load my context.
I have an application context at root level (applicationContext.xml) and a portlet specific context (MyPortlet-portlet.xml).
I have a portlet of type org.springframework.web.portlet.DispatcherPortlet which is wired up to a Controller. In the Controller I want to access one of the beans (e.g. bean with id “myBean”) I have defined in my portlet specific context. I have tried
MyBean mybean = (MyBean)PortletApplicationContextUtils.getWebApplicationContext(
getPortletContext()).getBean("myBean")
However only the beans in my application context are available here – none of my beans in my portlet specific context are available.
Is there a way to access the beans in my portlet specific context?
Thanks
Firstly, can’t you just wire in the bean to your controller in the normal way, rather than retrieving it programmatically?
Failing that, you should realise that
getWebApplicationContext()gets a reference to the root webapp context, not the servlet app context:If your controller needs a handle on its own context, then it should implement
ApplicationContextAwareorBeanFactoryAware, or it can use@Autowired ApplicationContextif you want to use autowiring.