Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/348.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何组织@RestController@Controller结构url映射和内部结构?_Java_Spring_Spring Mvc_Model View Controller_Controller - Fatal编程技术网

Java 如何组织@RestController@Controller结构url映射和内部结构?

Java 如何组织@RestController@Controller结构url映射和内部结构?,java,spring,spring-mvc,model-view-controller,controller,Java,Spring,Spring Mvc,Model View Controller,Controller,在我们的web应用程序中,我们有@Controller类和@RestController 您建议如何在我们的内部项目结构项目(包/模块)和url映射中组织它们 关于包结构,您有两种选择。层vs 组件包装 层打包保留层bean位于相同包中的策略(例如,UserController,InvoiceController位于 com.example.application.web包和UserService, InvoiceService位于com.example.application.service包

在我们的web应用程序中,我们有@Controller类和@RestController

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

  • 关于包结构,您有两种选择。层vs 组件包装

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

    组件打包保留每个功能的策略包(例如,
    用户控制器
    用户服务
    com.example.application.user
    InvoiceController
    InvoiceService
    位于
    com.example.application.invoice

    到目前为止,我只有使用分层包装的经验,并获得了一些意见 组件封装将解决很多问题(尤其是 耦合问题,因为您可以经常使用包私有bean (公众的)。所以如果由我决定,我会选择后者 接近

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

    你可以在这篇文章中读到更多关于正反两方面的内容

  • 关于控制器命名,这取决于您是否正在这样做 REST或视图模板。RESTAPI将很好地反映URL 控制器名称中的资源。如果您正在处理视图模板化 使用SpringMVC时,最好在视图中反映视图名称 控制器。这自然会为每个策略创建一个视图/REST资源 控制器,我肯定会遵循
  • URL结构取决于您的域。如果你有很多 资源、要将其分组并反映的视图 URL中的这些类别(“/shopping/invoice”,“/profile/user”)。我 不了解您的体系结构(SOA vs Monolith),但了解SOA 架构可以使用根级别的URL路由到特定的 服务。因此,您的服务可能会自然地处理一些单独的域 关注点