spring - 识别 Spring MVC 架构模式

标签 spring model-view-controller architecture

我正在完成一个 spring mvc 视频系列并且喜欢它!

  • https://www.youtube.com/channel/UCcawgWKCyddtpu9PP_Fz-tA/videos

  • 我想了解更多关于正在使用的确切架构的细节,但无法确定正确的 姓名 - 以便我可以进一步阅读。

    例如,我知道表示层是 MVC,但不太确定您会更具体地如何描述 考虑使用服务和资源对象的模式——而不是选择使用服务、DAO 和域对象。

    有什么线索可以帮助我更好地将搜索重点放在理解下面的布局上吗?
    application
      core
         models/entities
         services
      rest
         controllers
         resources
            resource_assemblers
    

    编辑:
    Nathan Hughes 的评论澄清了我对命名法的困惑,SirKometa 将我没有掌握的建筑点联系起来。谢谢你们。

    最佳答案

    据我所知,您提到的布局代表了通过 REST 服务与世界通信的应用程序。

  • core包代表所有与 View 无关的类(域、服务、存储库)。
  • model包 - 假设您的目标是典型的应用程序,您确实有一个 model/domain/entity代表您的数据的包 例如:https://github.com/chrishenkel/spring-angularjs-tutorial-10/blob/master/src/main/java/tutorial/core/models/entities/Account.java .
  • repository package - 由于您使用的是 Spring,因此您很可能也会使用,因为 spring-data甚至 spring-data-jpaHibernate作为您的 ORM 库。它很可能会引导您使用 Repository界面(您出于某种原因观看的视频的作者决定不使用它)。无论如何它将是您访问数据库的层,例如:https://github.com/chrishenkel/spring-angularjs-tutorial-10/blob/master/src/main/java/tutorial/core/repositories/jpa/JpaAccountRepo.java
  • service package 将是您操作数据的包。这不是最好的例子,但这一层不直接访问你的数据库,它会使用存储库来做它,但它也可能做其他事情——它将是你的 API 来操作你的应用程序中的数据。假设您想在将钱包保存到数据库之前对其进行花哨的计算,或者像这里 https://github.com/chrishenkel/spring-angularjs-tutorial-10/blob/master/src/main/java/tutorial/core/services/impl/AccountServiceImpl.java您想确保您尝试创建的博客尚不存在。
  • controllers包包含DispacherServlet 将使用的所有类处理请求。您将从请求中读取“输入”,对其进行处理(在此处使用您的 Services)并发送您的回复。
  • resource_assemblers在这种情况下,包是特定于框架的( Hateoas )。据我所知,它只是您的 json 响应的 DTO(例如,您可能希望将密码存储在您的 Account 中,但通过 json 公开它不是一个好主意,如果您不这样做就会发生使用 DTO)。

  • 如果这就是您要找的答案,请告诉我。

    关于spring - 识别 Spring MVC 架构模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29679992/

    相关文章:

    java - Spring 启动: Renaming the Main class

    java - 无法使用 keycloak-admin-client 在 Keycloak 中创建用户

    java - 解决JSP中的并发问题

    java - 错误: org. springframework.web.context.ContextLoader - 上下文初始化失败[context-security.xml]

    silverlight - 我应该如何设计我的Silverlight应用程序?

    Maven 的 Spring 在线存储库

    java - 需要帮助弄清楚基本的国际象棋移动逻辑

    asp.net-mvc - 你是如何填充/验证你的 ViewModel 的?

    api - Flutter 应用程序后端有哪些选项?

    architecture - 整洁架构与洋葱架构