spring - 为什么要创建接口
问题描述
我是春天的新手
在我的 Spring Web 项目 DAO 和服务中,他们创建了接口并实现了它创建的类。我们可以限制接口吗?
解决方案
使用接口的全部意义在于创建抽象。当您从 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 之外,它还可以帮助您通过不直接依赖具体类来解耦层。这是一个很好的设计模式
推荐阅读
- jax-rs - 从 JAX-RS ContainerRequestFilter 和 ContainerResponseFilter 中提取资源方法名称
- php - preg_slit 不能正常工作?- php
- sql-server - 谁能告诉我这有什么问题?我实际上正在尝试在表中搜索空值,如果可能的话建议我一种有效的方法来做到这一点
- xcode - 将tableView中的值添加到标签Swift4
- c# - 如何检测第二个屏幕
- sql-server - 群集共享卷 - SQL - 故障转移群集节点
- graphql-js - 如何在以编程方式定义的模式中为参数设置默认值?
- sql - 用于查找唯一列和连接两列结果的 SQL 查询
- sql - 基于月度数据中特定条件的 SQL 报告
- google-bigquery - 在 BQ(标准)中以 yyyymmdd 格式转换日期