0

我正在为网站创建后端基础架构。显然,后端基础设施需要与前端无关,它可以是网站、移动站点、移动应用程序、其他服务,任何东西。

我打算把它写成 RESTful Web 服务,我还想要依赖注入、事务管理和持久性框架。这里的限制是我将使用 Apache Tomcat Web 服务器,因此我不能使用 EJB(我不能使用 JBoss 或其他应用服务器)

我最初的想法是使用 Spring 框架 - 可靠、支持良好并且很容易满足我的所有需求。我有点犹豫是因为我只想要没有 View 的 REST 端点,而如果我使用 Spring,它将通过 Spring MVC 框架。在没有 View 部分的情况下使用 Spring MVC 是否正常?

我的选择是否有意义,还是我应该考虑其他框架?我研究了 JAX-RS 作为 REST 框架的另一种替代方案,但是我没有得到依赖注入/事务管理/持久性框架,我最终不得不使用其他框架来获得这些。

我还注意到有一个项目TomcatEE听起来也可以解决我的问题。.

感谢您的想法。提前致谢!

4

4 回答 4

1

是的,Spring 3 MVC 是一个优秀的框架,我正在它上面创建应用程序,它还支持 RESTful Web 服务。主要好处 - 控制器类的返回值自动转换为 JSON 对象。使用或不使用 View - 由您决定,没有视图一切都会正常工作

于 2013-01-22T14:21:45.290 回答
1

Tomcat 并不意味着没有 EJB。Tomcat 7 为您带来了 Jave EE 6,然后您可以使用 EJB 和 CDI 技术。我目前正在开发使用以下技术堆栈的软件:

  • JAX-RS RESTful 前端,将服务调用委托给
  • 服务 EJB-s,使用 @Inject CDI 注释注入到 RESTful 类中

不使用 Spring 有以下优点:

  • 少一项 3pp 依赖,少一项技术要求。显然不是优势。
  • 坚持使用标准 Java EE 技术使您的应用程序可移植(或多或少)

相反,我认为 Spring 是如此广泛和有据可查,使用它是一种魅力。Spring 的可移植性也很好,与 Spring 相比,不同 EE 供应商之间的不同 CDI 错误和错误实现(?)问题更多。我认为 Spring 不会强迫你采用 MVC 方式。您可以部分使用它,也可以根据需要混合使用它。如果您知道引擎盖下的内容,那么您可以非常灵活地使用 Spring。

备注:稍微考虑一下身份验证。RESTful 意味着 BASIC 身份验证,但 webapps 通常需要一个精美的登录页面,并且 BASIC auth 弹出窗口很难抑制。我们使用 SSO 来解决这个问题,一个带有 FORM auth 和精美登录屏幕的 webapp 以及 RESTful 服务中的 BASIC auth 用于其他客户端。SSO 导致登录第一个应用程序对 RESTful 调用也有效。

于 2013-01-22T14:39:55.847 回答
0

我会结合使用 Jersey 和 JAXB 来绑定到您的域类,可以在这里找到一个很好的教程:

http://www.vogella.com/articles/REST/article.html

使用 hibernate/jpa 时要注意,因为 JAXB 无法处理延迟加载的模型(然后您需要编写适配器类)

于 2013-01-22T14:12:27.650 回答
0

我正在以同样的方式使用 Spring Rest Data:服务器只用 JSON 响应,并不关心客户端可能对数据做什么。我也想知道使用 MVC,但没关系,没问题!

延迟加载:从我的角度来看,只有两种方法:

  1. 从数据库中加载所有急切的内容并将其发送到客户端
  2. 将引用序列化为链接,正如 Spring Rest Data 所做的那样。客户端可以/必须决定加载哪个。

There is a live demo application using Spring REST Data at demo.appdriver.com You can access the API at http://appdriver.prefabware.cloudbees.net/api/

于 2014-05-06T13:20:51.180 回答