Я надеялся на более подробный ответ, чем тот, что дал Ноэль. Может быть, есть лучшая практика для этого? Вот мое текущее решение:
Укажите расположение файла XML в качестве параметра init для моего портлета.
Мой метод init выглядит примерно так
@Override
public void init(PortletConfig config) throws PortletException {
super.init(config);
String configLocations = config.getInitParameter("contextConfigLocation");
ClassPathXmlApplicationContext springContext = new ClassPathXmlApplicationContext();
springContext.setConfigLocation(configLocations);
springContext.refresh();
config.getPortletContext().setAttribute(APPLICATION_CONTEXT_ATTRIBUTE, springContext);
}
Теперь я могу получать доступ к своему applicationContext через PortletContext каждый раз, когда мне нужно.
(ApplicationContext) portalContext.getAttribute(APPLICATION_CONTEXT_ATTRIBUTE);
APPLICATION_CONTEXT_ATTRIBUTE - это просто строковая константа, которую я составил. Я все еще открыт для лучших решений.