在没有Spring MVC的portlet中使用Spring

时间:2010-07-30 06:01:12

标签: java spring portlet vaadin

有没有办法在不使用DispatcherPortlet的情况下使用spring开发portlet?我想在UI中使用其他技术,主要是Vaadin。 Spring用于DI和其他东西。是否有类似于Portlet方面的ContextLoaderListener类的东西?

3 个答案:

答案 0 :(得分:1)

查看the Spring documentation:您可以按如下方式创建ApplicationContext

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

在类路径上引用xml文件。

然后,您可以通过调用context.getBean("beanName")来获取bean。不需要Spring MVC。

答案 1 :(得分:0)

我希望得到一个比Noel给出的更详细的答案。也许这有一些最好的做法?这是我目前的解决方案:

将xml文件位置作为init参数提供给我的portlet。 我的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);
}

现在我可以在每次需要时通过PortletContext访问我的applicationContext。

(ApplicationContext) portalContext.getAttribute(APPLICATION_CONTEXT_ATTRIBUTE);

APPLICATION_CONTEXT_ATTRIBUTE只是我编写的字符串常量。我仍然愿意接受更好的解决方案。

答案 2 :(得分:0)

您可以使用PortletApplicationContextUtils来检索Web应用程序上下文:

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

然后您只需要在web.xml上添加一些配置。