Java 后端体系结构:RESTfulWeb服务
我正在为一个网站创建一个后端基础设施。显然,后端基础设施需要与前端无关,它可以是网站、移动站点、移动应用程序、其他服务,任何东西 我计划把它写成RESTfulWeb服务,我还希望有依赖注入、事务管理和持久性框架。这里的限制是我将使用ApacheTomcatWeb服务器,因此我不能使用EJB(我不能使用JBoss或其他应用服务器) 我最初的想法是使用Spring框架,它坚固、支持良好,并且可以轻松地满足我的所有需求。我有点犹豫,因为我只是希望REST端点没有视图,而如果我使用Spring,它将通过SpringMVC框架。在没有视图部件的情况下使用Spring MVC正常吗 我的选择是有意义的还是有其他框架我应该考虑? 我研究了JAX-RS作为REST框架的另一种替代方案,但是我没有得到依赖注入/事务管理/持久性框架,我最终不得不使用其他框架来获得这些 我还注意到有一个项目听起来也能解决我的问题Java 后端体系结构:RESTfulWeb服务,java,spring,rest,architecture,Java,Spring,Rest,Architecture,我正在为一个网站创建一个后端基础设施。显然,后端基础设施需要与前端无关,它可以是网站、移动站点、移动应用程序、其他服务,任何东西 我计划把它写成RESTfulWeb服务,我还希望有依赖注入、事务管理和持久性框架。这里的限制是我将使用ApacheTomcatWeb服务器,因此我不能使用EJB(我不能使用JBoss或其他应用服务器) 我最初的想法是使用Spring框架,它坚固、支持良好,并且可以轻松地满足我的所有需求。我有点犹豫,因为我只是希望REST端点没有视图,而如果我使用Spring,它将通过
谢谢你的想法。提前谢谢 我会将Jersey与JAXB结合使用来绑定到您的域类 可以在此处找到一个好的教程:
请注意,当使用hibernate/jpa时,JAXB无法处理延迟加载的模型(您需要编写适配器类)是的,Spring3MVC是一个优秀的框架,我正在其上创建也支持RESTfulWeb服务的应用程序。主要的好处是:控制器类的返回值自动转换为JSON对象。使用或不使用视图-这取决于您,没有视图时一切都可以正常工作Tomcat并不意味着没有EJB。Tomcat7为您带来了JAVEE6,然后您可以使用EJB和CDI技术。我目前正在开发一个使用以下技术堆栈的软件:
- JAX-RS RESTful前端,将服务调用委托给
- 服务EJB-s,它们使用@InjectCDI注释注入RESTful类
- 少一个3pp依赖,少一个所需的技术。这显然不是优势
- 坚持使用标准JavaEE技术可以使您的应用程序具有可移植性(或多或少)
备注:请稍微考虑一下身份验证。RESTful意味着基本的身份验证,但webapps通常需要一个奇特的登录页面,而且基本的身份验证弹出窗口很难抑制。我们使用SSO来解决这个问题,一个webapp具有表单auth和奇特的登录屏幕,在RESTful服务中为其他客户端提供基本的auth。SSO导致在第一个应用中登录对RESTful调用也是有效的。Im使用Spring Rest数据,方式相同:服务器只使用JSON响应,而不关心客户端对数据的处理。 我还想知道如何使用MVC,但没关系,没问题 延迟加载:从我的观点来看,只有两种方法:
你可以在访问API我也这么想,我只是想知道如果不使用“视图”,而让控制器返回JSON,是否违反了“MVC”的目的,因为它有点像“M-C”,我想,在这种情况下,MVC中的V-将响应表示为JSON而不是HTML。@EvgeniyFitner我尝试了您描述的内容,但我无法让它返回JSON。因此,我尝试jersey/hibernate。要返回JSON,必须在spring配置中设置:1)JSON messageConverter,因为spring不知道您想要什么2)控制器方法必须注释为@ResponceBody。正如您所看到的,非常简单,谢谢。我想知道的是,如果我使用Spring违反了某种最佳实践。我的思路和您描述的一样,尽可能地精简,但是Spring是如此广泛和“标准”。公平地说,Hibernate以一种与JAXB(和其他技术)不兼容的方式实现延迟加载。与JAXB兼容的其他JPA提供者(如EclipseLink)已经实现了延迟加载。