spring vaadin_Vaadin Spring集成

spring vaadin

最近,我对另一个Web框架Vaadin产生了兴趣,但它在服务器端完成了所有工作:开发人员无需学习HTML,CSS或JavaScript。 由于Vaadin提出了我的观点,即由于不断需要经验丰富的开发人员,因此Web应用程序价格昂贵,因此我进行了更深入的探讨:这可能是另一篇文章的主题。

无论如何,当我想在Vaadin中使用我最喜欢的依赖注入框架(即Spring)时,我感到有些失望。 经过Google的少许研究,我找到了Vaadin Wiki,更确切地说有关Vaadin Spring Integration 的页面 。 它展示了将Spring与Vaadin集成的两种方法。

第一个使用Helper“模式”,这是一个具有静态方法的类,可以访问Spring应用程序上下文。 恕我直言,我们现在已经忘记了那些Helper类,因为它们完全破坏了DI的目的。 如果您需要显式调用Helper静态方法以获取Bean,那么控制反转在哪里?

第二种解决方案使用Spring专有注释@Autowired以便使用DI。 由于IoC完全是关于解耦的,所以我强烈反对将代码耦合到Spring框架。

由于这两个选项对我来说似乎都不可行,所以让我向您介绍我所想象的一个:它非常简单,包括对Vaadin的AbstractApplicationServlet进行子类化,然后使用它代替经典的ApplicationServlet

publicclassSpringVaadinServletextendsAbstractApplicationServlet{

  /** Class serial version unique identifier. */
  privatestaticfinallongserialVersionUID=1L;

  privateClassclazz;

  @Override
  publicvoidinit(ServletConfigconfig)throwsServletException{
    super.init(config);
    WebApplicationContextwac=WebApplicationContextUtils.getRequiredWebApplicationContext(
      config.getServletContext());
    Applicationapplication=(Application)wac.getBean("application",Application.class);
    clazz=application.getClass();
 }

  /**
   * Gets the application from the Spring context.
   *
   * @return The Spring bean named 'application'
   */
  @Override
  protectedApplicationgetNewApplication(HttpServletRequestrequest)
    throwsServletException{
    WebApplicationContextwac=WebApplicationContextUtils.getRequiredWebApplicationContext(
      request.getSession().getServletContext());
    return(Application)wac.getBean("application",Application.class);
  }

  /**
   * @see com.vaadin.terminal.gwt.server.AbstractApplicationServlet#getApplicationClass()
   */
  @Override
  protectedClassgetApplicationClass()
  throwsClassNotFoundException{
    returnclazz;
  }
}

此解决方案简洁明了(根据我的说法)。 唯一的缺点是它将servlet耦合到Spring。 但是,类本地化的耦合没有任何后果,并且完全可以接受。 Morevoer,这使您可以使用Spring自动装配机制,JSR 250自动装配或普通的XML显式装配。

翻译自: https://blog.frankel.ch/vaadin-spring-integration/

spring vaadin

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值