首页 > 解决方案 > 为什么要创建接口

问题描述

我是春天的新手

在我的 Spring Web 项目 DAO 和服务中,他们创建了接口并实现了它创建的类。我们可以限制接口吗?

标签: springspring-bootspring-mvc

解决方案


使用接口的全部意义在于创建抽象。当您从 Service 调用 DAO 时,您的服务不知道 DAO 的实际实现/在您有多个 DAO 接口实现的情况下,您的服务不知道正在使用的实际 impl。

使用 spring,您将使用 - Autowire 来注入依赖项。您将使用界面引用您的依赖项。

    @Component/@Service
    class ServiceImpl {
      @Autowired
      private DAOInterface dao;

      // Rest of code
    }

Spring 知道 - 要创建此 ServiceImpl 的实例,它需要注入 DAOInterface 类型的具体 impl。如果您有具体的实现,它会这样做。如果您有多个 impl - 您需要使用 @Qualifier 按 bean 名称定义您需要的实现。

接口是 impl 类的一种契约。除了抽象实际的 impl 之外,它还可以帮助您通过不直接依赖具体类来解耦层。这是一个很好的设计模式


推荐阅读