小编use*_*651的帖子

"Restful"Java WEB MVC框架

我正在开发的应用程序将"响应",执行异步通信并来回传递大量JSON.

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

1)BLOAT的最小数量和"幕后魔术".对于任何框架,总是在框架功能与复杂性之间进行权衡.但是,当我遇到问题并且必须"打击框架"(并且那个时间总是来临)的时候,我希望它是一场公平的斗争.最小化框架的庞大规模增加了公平战斗的可能性.

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

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

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

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

6)本机认证/授权安全方案,支持"基于角色"的安全性或与弹簧安全性轻松集成

以上所有内容都应该整合到框架中.不是在某个第三方用户贡献的模块中,当框架的新版本出现时,该模块会消失.

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

Spring MVC 3

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

  • 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支持这个,从我看到的例子看起来并不太讨厌

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

引用:

"在封面下,Spring MVC委托HttpMessageConverter执行序列化.在这种情况下,Spring MVC调用基于Jackson JSON处理器构建的MappingJacksonHttpMessageConverter.当你使用Jackson的mvc:annotation-driven配置元素时,这个实现会自动启用出现在你的课程中."

对我来说有点警告信号.我希望对我正在使用的JSON处理器有明确的编程控制.也许我在这里遗漏了一些东西.这在我的书中被认为是不受欢迎的"幕后魔术"

4)是的

5)是的

6)是的

玩框架

1)版本1.2在我的磁盘上重88.5 MB.不在servlet容器中运行,所以获得hello world示例并且运行与spring相比很容易,即使找到我需要哪些罐子也是保密的.很明显,很多东西都发生在幕后.我想我所能希望的是它没有做到比它更多.而且这种结构是理智的.但是,当我有一天必须打击框架时,我会在抵达时死亡吗?谁知道...

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

3)是的,但它在封面下使用gson.再说一遍,为什么我不能以编程方式控制它?幸运的是,可以将任意序列化程序传递给gson来覆盖默认值.我认为该参数映射到play renderJSON()本机函数的第二个参数.因此,半个拇指向上传球.

4)是的.有一个JPA模块

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

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

的Restlet

也许是一个特殊的候选人,因为它被用于"不安分的网络服务".但是对于我的观点(1) - (6)和我的应用程序类型,其中大多数用户交互是异步的,它似乎是一个很好的选择.我可以在静态资源或动态生成的内容上运行它并吐出任何内容类型.

1)Restlet 1.1.1约为54 MB.看看你好世界的例子.我喜欢缺少XML文件.就像玩它有自己的服务器(jetty连接器).你好世界的例子看起来非常简洁.

2)是的,这种方法非常"程序化"

3)是的,但似乎只能通过杰克逊扩展模块.鉴于此框架的程序性,似乎有其他选项,但我没有在文档或用户组论坛中找到任何内容.

4)将自己描述为"持久性不可知".好的,我觉得这很好.但我想坚持下去,而不是自己重新发明管道.或者至少我想要一点点如何表明它可以通过一些努力来完成.有一个第三方jpa模块但它建立在restlet 1.0上.Restlet有一个弹簧模块,所以也许我可以整合弹簧坚持的东西......

5)是的,有一个freemarker扩展名

6)有一个原生计划.乍一看,不像春天的安全那样富裕.再说一次,也许我可以整合?

摘要

Spring MVC 3:支持所有要求,可能除了(1)之外.我唯一关心的是它似乎很复杂,我得到一种模糊不愉快的感觉,就是不能控制.随着我的应用程序的增长,我真的不希望以后被框架"陷入困境".

玩 …

java model-view-controller web-frameworks

7
推荐指数
1
解决办法
4329
查看次数