Spring MVC和Web Application分开了

时间:2014-05-17 23:08:59

标签: spring angularjs spring-mvc restful-architecture

我最近一直在谷歌搜索,但我发现自己找不到答案。

我有一个由Spring Security保护的完整Spring MVC应用程序,以及向控制器公开逻辑的服务(控制器 - > service - > repository - > POJO)。

目前除了登录控制器之外,我的所有控制器都只提供JSON / XML,我希望它能保持这种状态。我不想在每个控制器上呈现不同的视图。

但是,我希望能够将Web应用程序与后端分开,因为我希望能够使用比Web浏览器更多的平台来集成我的服务。

目前我有常规的Spring MVC应用程序:

  • 配置
  • 域(POJO的)
  • 存储库
  • 服务
  • 控制器

登录是使用Thymeleaf渲染视图和Spring Security完成的,它只是过滤应用程序根目录下的所有URL。在此之后,它只是一堆静态文件作为资源:

Spring控制器发送一个“{ontrollerName} / layout”来提供用于给定Spring Controller下所有数据的AngularJS HTML部分。

我想要的是一种将/ webapp目录中的所有内容与项目的其余部分分开的方法。我在这里研究了一些不同的解决方案,例如使用Apache Proxy,我的Apache Http服务器托管客户端代码,后端使用Ajax与后端控制器进行通信,Tomcat托管后端。但是,我听说像这样代理是不安全的。然而,我可能在这里犯错了。

所以,我希望得到答案的问题是: 1.编写一个使用Apache http服务器代理的客户端来提供对服务器上Ajax的访问是否可以?

  1. 如果没有;我该怎么办?尝试从/ webapp目录中提取客户端是否有任何意义,或者这只是我创建的一些愚蠢的想法,因为能够部署它们而不必相互转发它们似乎很酷?

  2. 关于如何使用单独的模块构建项目,是否有最佳实践? Think Gradle为多个模块构建脚本。

  3. 我应该用不同的术语思考并使用一种不基于Spring MVC的方法吗?如果是的话,请告诉我。

  4. 我希望这对你们来说很明确。

1 个答案:

答案 0 :(得分:0)

解决方案是使用通过OAuth 2进行身份验证的restful API的简单方法。

基本上,两个最佳选择是混合解决方案(部分restful API和部分服务器端页面呈现)或完整的RESTful API,您可以在静态Web客户端中实现所有功能。这样就不需要多模块项目并将一起打包在一个包中。