gpt4 book ai didi

Spring MVC 最佳实践

转载 作者:行者123 更新时间:2023-12-01 11:32:34 24 4
gpt4 key购买 nike

我正在开发一个 Spring MVC web 应用程序,我将 JPA 实体保存在存储库包中,dao 和 Controller 类保存在单独的包中,jsp 保存在 WEB-INF 的文件夹中。

我的问题是,在这个应用程序中,模型是什么, Controller 是什么, View 是什么?我应该在哪里保存业务逻辑(dao 或 Controller )?明确分离业务逻辑的最佳实践是什么?

最佳答案

对于您所描述的内容,图层如下:

  • 查看:JSP 文件
  • Controller :DispatcherServlet(前端 Controller )和你的 Controller 类
  • 模型:剩下的所有

  • 对于问题的后半部分,您实际上是在寻求基于意见的答案。但以下似乎是一种常见的模式:

    如果你把业务逻辑放在 Controller 中,你会得到一个 Fat Stupid Ugly Controller(只是谷歌周围)。即使 Spring MVC 给了你测试 Controller 的工具,但通常的用法是避免它,因为 Controller 严重依赖于框架,最好使业务逻辑尽可能独立于框架。永远不会知道,您以后可能出于任何原因不得不使用不同的框架。

    出于同样的原因,将业务逻辑放在 DAO 中同样糟糕:框架独立。

    我的建议是在 Controller 和 DAO 之间添加一个服务层,对于真正的 CRUD 应用程序可能会出现异常。它是一个对框架依赖较少的层;而实际上它一般不是由框架产生的原因是:框架无法了解您的业务逻辑。服务类还有另一个原因,它是 事务划分应该存在的层: Controller 几乎不支持 JDK 代理(这是 Spring 框架中的默认事务划分),并且在单个事务中调用多个 DAO 方法可能是相关的。

    但我必须承认,以上是我的观点,而不是大实话(不仅是我的,而且绝对是一个意见)。您当然可以找到业务逻辑非常小以至于不需要开销或服务层的用例:这只是一种架构选择,前提是您知道 为什么你做出选择任何可能性都可以是好的。

    关于Spring MVC 最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31035744/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com