【问题标题】:Business Logic and Exceptions in a Spring 3 applicationSpring 3 应用程序中的业务逻辑和异常
【发布时间】:2018-05-31 20:15:00
【问题描述】:

假设我有一个分为 3 层的 Spring 应用程序:控制器、服务和存储库。所有的业务逻辑应该放在哪一层?根据我在网上阅读的内容,控制器应该只使用服务,而服务应该是包含所有业务逻辑的服务。这个对吗?我应该处理服务中可能发生的异常吗?我对 Spring 很陌生,不确定哪种方法是正确的,哪些是最佳实践。

【问题讨论】:

标签: java spring spring-boot


【解决方案1】:

进入服务。

  1. 回购 - 与数据库交互
  2. 控制器 - Http 通信处理(或其他类型的交互,如 CLI)
  3. 服务 - 业务逻辑。

【讨论】:

  • 和异常你应该在哪里处理它们?在服务中?
  • 取决于场景,但我会说是的,在大多数情况下
  • 在Controller中处理异常也很常见。例如,Service 抛出 UserNotFoundException 并且 Controller 捕获它并按照 restful 原则向请求客户端响应 404。
  • @Matt 这是我的方法,但不确定是否正确
  • @Ricki 正如 Antoniossss 所说,这真的取决于。在三层中的每一层中都有抛出、捕获和处理异常的示例。我想没有规则,因此,有时可能会很棘手。阅读一些关于异常处理的 Spring 教程可能是一个好的开始。
【解决方案2】:

您应该将所有业务逻辑放入服务层

通常,异常也在服务层处理。这主要是因为可重用性。但是,在 Spring Applications 中,通常即使服务层也会抛出异常,这样您就可以将所有错误集中在一个处理程序类中。

Spring MVC Exception Handling了解更多信息。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-11-10
    • 2012-05-20
    • 2016-08-21
    • 2016-11-14
    • 2017-08-25
    • 1970-01-01
    • 1970-01-01
    • 2013-01-10
    相关资源
    最近更新 更多