Использование Spring в портлете без Spring MVC - PullRequest
2 голосов
/ 30 июля 2010

Есть ли способ разработки портлетов с пружиной без использования DispatcherPortlet? Я хочу использовать другие технологии для пользовательского интерфейса, в основном Vaadin. Spring используется для DI и других вещей. Есть ли что-то похожее на класс ContextLoaderListener на стороне портлета?

Ответы [ 3 ]

1 голос
/ 30 июля 2010

Просмотр документации Spring : Вы можете создать ApplicationContext следующим образом:

ApplicationContext context =
    new ClassPathXmlApplicationContext(new String[] {"services.xml", "daos.xml"});

Ссылки на файлы XML в вашем пути к классам.

Затем вы можетеполучить бобы, позвонив context.getBean("beanName").Нет необходимости в Spring MVC.

0 голосов
/ 28 января 2011

Вы можете использовать PortletApplicationContextUtils для получения контекста веб-приложения:

ApplicationContext ctx = PortletApplicationContextUtils.getWebApplicationContext (getPortletContext ());

Затем вам просто нужно добавить некоторые настройки в вашу сеть.XML.

0 голосов
/ 30 июля 2010

Я надеялся на более подробный ответ, чем тот, что дал Ноэль. Может быть, есть лучшая практика для этого? Вот мое текущее решение:

Укажите расположение файла 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 - это просто строковая константа, которую я составил. Я все еще открыт для лучших решений.

...