是的,我知道,最好的 web 框架的老问题......但让我解释一下。
我正在寻找基于 Java Servlet 的 Web 框架,它允许 RESTful 交互并且也适合构建 Web GUI。
我想要的是:
- REST 支持与 http 内容协商和良好的 URL 映射
- 从请求参数到域对象的数据转换(理想情况下也是另一个方向)
- 无需复制域对象作为 Web 的接口(如在 struts 中)
- 简单的 EJB 集成
- 依赖注入应该由 Java EE 服务器执行
- 可理解的代码(我不喜欢 Spring MVC 在类路径中对组件的魔术布线)
- 易于配置(在 Spring 中没有神奇地配置的东西在容器中配置很乏味 - 我有时更喜欢直接依赖)
- 轮子不应该被重新发明,例如应该使用 JPA 和 BeanValidation 之类的东西,而不是被框架重新发明,或者至少这些标准应该易于使用。
- 在表单中显示错误的验证支持
- 支持国际化
候选人:
Spring MVC很强大,但是我厌倦了 Spring 的配置,不喜欢这种编程模型。我认为它有点过于抽象和灵活,因此需要很多配置。而且我不喜欢 Spring MVC 使用注解的方式。但是也有一些设计缺陷,比如
return
通过输出参数返回值的方法——真的很丑!我认为将 Spring MVC 与 Java EE 依赖注入一起使用并不容易,因为 Spring MVC 严重依赖 Spring DI。Roo看起来很酷,但它只是创建 Spring MVC 应用程序的另一种方式,它使用 AOP 做了一些奇怪的事情。
Struts有点笨拙和过时。
条纹ActionBean 方法看起来并不比 Struts 好多少。我不喜欢它。
- Grails不错,但有问题(至少在 1.2 之前)。Reeinvents the wheel:例如,我更喜欢 JPA 而不是 Gorm。
我不是在服务器上寻找具有 UI 状态的框架,如 Wicket、Tapestry 或 JSF。我认为这种方法与网络的基本原则相矛盾!
那么该怎么办?从头开始编写框架?唔 ...
我想要像JAX-RS 这样支持经典浏览器 GUI 的东西。例如,框架应该支持验证并将验证错误放入重新显示的表单中。有没有类似的东西?有什么建议吗?