【问题标题】:Is this a good Spring Architecture (include testing)这是一个好的 Spring 架构吗(包括测试)
【发布时间】:2018-02-03 05:56:54
【问题描述】:

我目前正在从事一个 Spring 项目。我做了一个图表来说明我在说什么。下面的图表 UML 是否代表 Spring 遵循的正确/良好架构?

解释一下,RestController 重定向请求。这个控制器有一个接口依赖注入了真实的类(这里是一个处理带有文件的报告存储的类)。

DatabaseFile 类实现DatabaseInterface。一方面,一些内容处理方法(如 getContentFromReport(string) -> 调用 readFile(String) 然后例如只采用重要的行),另一方面纯文件方法(如 ReadFile 使用 (Reader, FileUtil...) )。

我的问题是文件方法(readFile()、deleteFolder())不包含依赖注入,我不能模拟一些对象。

图表:

【问题讨论】:

    标签: java spring spring-mvc architecture inversion-of-control


    【解决方案1】:

    您必须遵循标准的 MVC 方法(视图将是 JSON/XML 中的响应)。 您必须将所有业务逻辑保留在 DAO 层中,并将 DAO 注入到服务层中,然后将此服务注入到其余控制器中。 出于测试目的,您可以模拟 dao 和服务层。

    【讨论】:

    • 谢谢,如果我明白了,我的 RestController 返回数据,但所有过程都是在 DAO(模型)中进行的?
    • 是的,从技术上讲,您必须通过休息控制器中的服务层调用您的 DAO 层,并且此 DAO 层将通过服务层将响应或数据返回到您的休息控制器。像这样的东西:-- Rest controller ----> Service---->DAO-->(perform operation) DAO(return data/response)---->Service----->RestController
    【解决方案2】:

    您应该有 ControllerService 层(接口和实现)和 DAO 层(存储库接口和实现)。

    您必须保留服务内部层的业务逻辑,不在DAO中。 DAO 不应该对您的业务逻辑一无所知。它仅用于与数据库通信的响应。

    【讨论】:

      猜你喜欢
      • 2011-12-17
      • 1970-01-01
      • 1970-01-01
      • 2010-12-24
      • 2016-01-12
      • 1970-01-01
      • 2012-09-12
      • 2017-07-08
      • 2019-01-31
      相关资源
      最近更新 更多