【问题标题】:How to organize @RestController @Controller structure url-mapping and internal structure wise?如何明智地组织 @RestController @Controller 结构 url-mapping 和内部结构?
【发布时间】:2015-08-30 12:54:24
【问题描述】:

在我们的网络应用中,我们同时拥有@Controller 类和@RestController。

您建议如何在我们的内部项目结构项目(包/模块)和 url 映射明智地组织它们?

【问题讨论】:

    标签: java spring spring-mvc model-view-controller controller


    【解决方案1】:
    1. 关于包结构,您有两种选择。层与 组件包装。

      层封装保留层 bean 位于相同包中的策略(例如,UserController、InvoiceController 在 com.example.application.web 包和UserService, InvoiceService 在 com.example.application.service 包中)。 这在野外最为常见。

      组件打包保留每个功能的策略包(例如,UserController、UserService 在 com.example.application.user 和 InvoiceController, InvoiceService 在 com.example.application.invoice)。

      到目前为止,我只对 Layer 打包有过经验并获得了意见 组件封装会解决很多问题(尤其是 耦合问题,因为您通常可以使用包私有 bean 代替 公众)。所以如果由我决定,我会选择后者 方法。

      但您的团队必须决定使用和坚持哪种结构 它。

      您可以在SO thread 中阅读更多关于利弊的信息

    2. 关于控制器命名,这取决于你是否在做 REST 或 VIEW 模板。 Rest API 可以很好地反映 URL 控制器名称中的资源。如果您正在处理 VIEW 模板 使用 Spring MVC,最好将视图名称反映在 控制器。这自然会为每个策略创建一个视图/REST 资源 控制器,我肯定会遵循。
    3. URL 结构取决于您的域。如果你有很多 资源、视图,您希望将它们分组并反映 URL 中的这些类别(“/shopping/invoice”、“/profile/user”)。一世 不知道你的架构(SOA vs Monolith),但是在 SOA 架构可以使用根级 URL 来路由到特定的 服务。所以你的服务可能会自然地处理一些单独的域 担忧。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-03-03
      • 2021-10-09
      • 2016-06-15
      • 2012-12-12
      • 2014-01-14
      • 1970-01-01
      • 2015-04-09
      相关资源
      最近更新 更多