在 Spring 应用程序中拥有 RestController 和 Controller 的最佳实践

Oui*_*sal 6 java rest spring

我不是在问是否有可能,我知道有可能,但我想知道在我的应用程序中有前端的同时提供休息服务的最佳方式是什么。

我正在开发一个 Spring Boot 应用程序,我目前有一个调用 jsp 页面的控制器和一个单独的RestController。我希望能够使用 Android 应用程序使用它。

那么在我的应用程序中同时拥有一个 Controller 和一个单独的Restcontroller是否正确?例如,将从 /api/* 调用 Rest 控制器方法。


编辑:我知道两者之间的区别,但是由于我希望能够返回视图(并且我不应该使用 RestController 来这样做)并且我想要一个休息服务我想知道我是否可以同时拥有他们(当然是分开的)。

非常感谢你。

Rad*_*eel 7

我会说这是可能的,但在典型的分层弹簧应用程序(将回到那个)中被认为是一种不好的做法(除了像 REST 应用程序中 Swagger 的控制器这样的极端情况)
您可能想要创建一个多-module 项目,可能看起来像这样:

  • 父项目
    ——核心
    ——web api(基于jsp)
    ——rest api(针对android)

web api 和 rest api 都依赖于核心。
web api 和 rest api 是单独的部署单元。您可以将它们部署在同一台服务器上或作为单独的应用程序运行(例如使用 spring boot)。取决于您的用例。
有了它,您可以在一个地方(核心)拥有您的业务逻辑。

您可能还想了解ports and adapters架构,这可能会让您了解如何以更有条理的方式解决这个问题,而不仅仅是让 Controller 和 RestController 并排坐在一起