有没有办法在不使用DispatcherPortlet的情况下使用spring开发portlet?我想在UI中使用其他技术,主要是Vaadin。 Spring用于DI和其他东西。是否有类似于Portlet方面的ContextLoaderListener类的东西?
答案 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上添加一些配置。