2010-07-30 6 views
2

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

+0

Я не думаю, что есть еще одна реализация портлета весной, за исключением этого MVC. Конечно, мы можем изготовить бобы непосредственно как писатель ноля, но как это будет рассматриваться как портлет? – Parth

ответ

0

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

Укажите расположение файла xml в качестве параметра 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 каждый раз, когда мне нужно.

APPLICATION_CONTEXT_ATTRIBUTE - это просто постоянная строка, которую я составил. Я по-прежнему открыт для лучших решений.

1

Глядя на the Spring documentation: Вы можете создать ApplicationContext следующим образом:

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

Реферирование XML-файлы на вашем пути к классам.

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

0

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

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

Тогда вам просто нужно добавить некоторую конфигурацию в свой web.xml.

+1

Как вы инициализируете контекст приложения с помощью PortletApplicationContextUtils? – palto

Смежные вопросы