gpt4 book ai didi

java - "Restful"Java WEB MVC 框架

转载 作者:行者123 更新时间:2023-12-04 12:36:00 25 4
gpt4 key购买 nike

我正在开发的应用程序将具有“响应性”,进行异步通信并来回传递大量 JSON。

我需要一个支持的 Java MVC WEB 框架

1) BLOAT 最低金额 和“幕后魔术”。对于任何框架,框架功能与复杂性之间总是存在权衡。但是,当我遇到问题并且必须“与框架作斗争”时(而且那个时候总是会到来),我希望这是一场公平的斗争。最小化框架的庞大规模会增加公平竞争的可能性。

2) 原生 RESTFUL 支持 . IE。路由html动词并执行内容协商。

3) 直接支持处理 JSON .使用我选择的任意 json 处理器,即 jackson 或 gson 等。

4) 直接的持久化支持 ,例如JPA等

5) 一些模板系统 ,例如freemarker,速度等

6) 本地认证/授权支持“基于角色”的安全性的安全方案或与 spring 安全性轻松集成

以上所有内容都应集成到框架中。不是在某些第三方用户贡献的模块中,当框架的新版本出现时,这些模块会腐烂。

我坐了一天,试验了一下,找到了以下候选

Spring MVC 3

1) 要在 Spring MVC 3 中启动并运行众所周知的“Hello World”示例,我需要以下 jars:

  • org.springframework.beans-3.1.0.RELEASE.jar
  • org.springframework.expression-3.1.0.RELEASE.jar
  • org.springframework.asm-3.1.0.RELEASE.jar
  • org.springframework.context-3.1.0.RELEASE.jar
  • org.springframework.core-3.1.0.RELEASE.jar
  • org.springframework.web-3.1.0.RELEASE.jar
  • org.springframework.web.servlet-3.1.0.RELEASE.jar

  • 最后是 xml 文件中的一些定义,“dispatcher-servlet.xml”。我不知道这是否是 BLOAT 或太多幕后魔术的原因。但它并没有给我一种被某种控制的温暖和模糊的感觉

    2) Spring 3 支持这个并且来自 examples我看到它看起来不太讨厌

    3) 支持,但从 (2) 中的链接看来,处理 json 似乎仅限于使用 jackson 库。至少如果您想使用魔术注释进行内容协商。

    引用:

    "Underneath the covers, Spring MVC delegates to a HttpMessageConverter to perform the serialization. In this case, Spring MVC invokes a MappingJacksonHttpMessageConverter built on the Jackson JSON processor. This implementation is enabled automatically when you use the mvc:annotation-driven configuration element with Jackson present in your classpath."



    对我来说是一个警告信号。我想对我使用的 JSON 处理器有明确的编程控制。也许我在这里遗漏了一些东西。这在我的书中属于不需要的“幕后魔法”

    4) 是的

    5) 是的

    6) 是的

    播放框架

    1) 1.2 版在我的磁盘上重 88.5 MB。不在 servlet 容器中运行,因此与 spring 相比,获取 hello world 示例并运行很容易,在 spring 中,甚至找出我需要的 jars 都处于保密状态。显然,很多事情发生在幕后。我想我所能希望的只是它不会做得比它必须做的更多。而且建筑是理智的。但是,当有一天我不得不与框架作斗争时,我会在到达时死去吗?谁知道...

    2)是的,它做得很优雅。竖起大拇指。

    3) 是的,但它在幕后使用 gson。同样,为什么我不能以编程方式控制它?幸运的是,可以将任意序列化程序传递给 gson 以覆盖默认值。我认为该参数映射到 play renderJSON() native 函数的第二个参数。所以比赛以半个拇指向上通过。

    4) 是的。有一个 JPA 模块

    5) 是的。使用 groovy。我没意见。

    6) 应该可以通过组合安全和死锁模块来实现。不知道它与 Spring 安全性的叠加效果如何。我没有看到任何对密码加密等的内置支持。并且不知道与 Spring Security 集成会有多困难(如果可能的话)。不知道我是否愿意部署敏感数据并依靠游戏!安全框架。可能必须在它之上构建一些东西。

    ReSTLet

    也许是一个特殊的候选者,因为它被营销用于“不安的网络服务”。但是对于我的观点 (1) -(6) 以及我的大多数用户交互都是异步的应用程序类型,它似乎很合适。我可以在静态资源或动态生成的内容上运行它并吐出任何内容类型。

    1) ReSTLet 1.1.1 大约 54 MB。浏览了 hello world 示例。我喜欢没有 XML 文件。就像玩一样,它有自己的服务器( jetty 连接器)。 hello world 示例看起来非常干净和简单。

    2)是的,而且这种方法非常“程序化”

    3) 是的,但似乎只能通过 jackson extension module .鉴于此框架的编程性质,似乎还有其他选项,但我在文档或用户组论坛中没有找到任何内容。

    4)将自己描述为“持久性不可知论者”。好的,我想这很好。但我想坚持而不是自己重新发明管道。或者至少我想要一点方法来表明它可以通过一些努力来完成。有一个第三方 jpa 模块但它是建立在 reSTLet 1.0 上的。 ReSTLet 有一个 spring 模块,所以也许我可以与 spring 持久性的东西集成......

    5) 是的,有一个 freemarker 扩展

    6) 为此有一个本地方案。乍一看,还不如春安那么“有钱”。再次,也许我可以整合?

    总结

    Spring MVC 3 :支持所有要求,也许除了 (1)。我唯一担心的是它看起来很复杂,我有一种无法控制的模糊不愉快的感觉。我真的不想在以后随着我的应用程序的增长而被框架“陷入困境”。

    播放 : 非常愉快的经历。甚至有趣。如果安全方案更先进,或者我至少可以与 spring 安全集成(并找到有关如何操作的文档)

    ReSTLet :出于某种原因,这个框架引起了我的共鸣。程序化方法会产生一种控制感。 但如果我不能以某种简单的方式坚持下去,那我就不行了 .无法真正理解为什么没有内置。不是每个人都需要这个吗?
  • 使用过上述任何框架的人怎么说?
  • 我的观察准确吗?
  • 我是否遗漏了一个应该在这里的框架?
  • 备择方案?
  • 最佳答案

    Spring 和 Play 之间的比较现在已经非常过时了,因为 Play 2.0 已经用 Scala 重写并且几乎在所有可能的方面都更好。

    看看:http://www.playframework.org/

    关于java - "Restful"Java WEB MVC 框架,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8659259/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com