java - Web 框架 : How is Play different from Spring MVC?

标签 java spring-mvc playframework

Play Framework提供以下快速概述,但除了 Groovy 模板引擎(如果需要,可以在 Spring MVC 中获得)之外,Spring 似乎提供了所有相同的功能以及更多......

  • 修复错误并点击重新加载!编辑您的 Java 文件,保存,刷新您的浏览器并立即查看结果!无需编译、部署或重新启动服务器。 Spring 会这样做,这会很烦人。

  • 无状态模型 Play 是一个真正的“无共享”系统。为 REST 做好准备,它可以通过在多台服务器上运行同一应用程序的多个实例来轻松扩展。 典型的 Spring 应用程序有一个无状态的应用程序层;除非您愿意,否则它并不是纯粹的 RESTful,但 Spring 已经“为 REST 做好了准备”。

  • 高效的模板系统 一个干净的模板系统,基于 Groovy 作为一种表达语言。它提供模板继承、包含和标签。 Spring 使用 Java,但 Groovy 也是一种选择。

  • 快速解决错误 发生错误时, Play 会显示源代码和包含问题的确切行。即使在模板中。 Spring 也这样做。

  • 创建酷炫的 Web 应用程序所需的一切 提供与 Hibernate、OpenID、Memcached... 和插件系统的集成。 Spring 集成了一切,甚至更多。

  • 纯 Java 使用 Java 编写代码,使用任何 Java 库并使用您喜欢的 IDE 进行开发。与 eclipse 或 netbeans 很好地集成。 Spring 也是纯 Java。

  • 非常快启动快,运行快! 主观,但 Spring 很快。

那么 Play 框架实际上与 Spring MVC 有什么不同呢?
简而言之,Spring 可以做什么 Play 框架不能(反之亦然)?

最佳答案

我觉得任何一方的“纯 Java”声明都非常有趣。

当然,一个项目只使用 java 是不现实的。不过,“纯 Java”标签应该有一些标准,我认为这两个框架都不符合条件。

Play 实际上修改了 Java 语言的语义。只要明确规定就可以了。如果您进行一些字节码操作,请诚实对待它。通常它是通过 AOP-ish 技巧完成的,实例方法用额外的行为装饰,它们的 list 行为——这些写在代码中,通常被保留。这并不难接受,我们可以假装我们的代码是框架的子类,并且我们的方法被其他行为覆盖。

在 Play 中,一个静态方法调用同一个类中的另一个静态方法可以产生神奇的效果,其行为与方法调用完全不同。如果 Java 程序员不能再确定什么是静态方法调用,那将是一个大问题。

Spring - 好吧,他们的 Java 部分仍然是纯 Java。但它是如此神奇(来自 java 的 POV),并且如此严重地依赖于一个沉重的框架,将 Spring 称为“纯 Java”,如果我们忽略肉的话,就像称汉堡为“纯蔬菜”一样。肉是最好的部分!

关于java - Web 框架 : How is Play different from Spring MVC?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3576836/

相关文章:

playframework - 如何将 Scala Squeryl ORB 与 play 2.0 框架集成?

java - 格式化 BigDecimal 或不带小数分隔符的数字

java - 将动态 WHERE 子句传递给 Java/JDBC 中的函数的安全方法

java - 如何应对历史敏感性?

Java Play Framework 2.6 不返回 `Access-Control-Allow-Origin` CORS header

scala - 使用 scala 处理 HTTP 响应的最佳实践

java - FileReader 似乎不起作用

java - 如何使用 spring 以编程方式调用 GET/POST 方法

spring-mvc - Redis 间歇性超时

java - Spring 的 Bean 列表