当前位置: 首页 > 知识库问答 >
问题:

在spring Boot中创建接口并实现它而不是在控制器中执行所有代码有什么好处?[副本]

殷耀
2023-03-14
package com.levent.consultantapi.service;

import java.util.List;

import com.levent.consultantapi.model.Consultant;

public interface ConsultantService {
    
    List<Consultant> getConsultants();
    Consultant createConsultant(Consultant consultant);
    Consultant getConsultantById(Long id);
    Consultant updateConsultantById(Long id, Consultant consultant);
    Consultant deleteConsultantById(Long id);

}

package com.levent.consultantapi.service.consultant.impl;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.levent.consultantapi.model.Consultant;
import com.levent.consultantapi.repository.ConsultantRepository;
import com.levent.consultantapi.service.ConsultantService;

@Service
public class ConsultantServiceImpl implements ConsultantService {
    
    @Autowired
    private ConsultantRepository consultantRepository;
    
    @Override
    public List<Consultant> getConsultants() {
        return consultantRepository.list();
    }

    @Override
    public Consultant createConsultant(Consultant consultant) {
        return consultantRepository.create(consultant);
    }

    @Override
    public Consultant getConsultantById(Long id) {
        return consultantRepository.get(id);
    }

    @Override
    public Consultant updateConsultantById(Long id, Consultant consultant) {
        return consultantRepository.update(id, consultant);
    }

    @Override
    public Consultant deleteConsultantById(Long id) {
        return consultantRepository.delete(id);
    }

}

共有1个答案

濮阳旺
2023-03-14

在java中,抽象可以借助接口和抽象类来实现。所以使用接口的主要原因是为了实现抽象。

现在让我们假设您正在编写一个api(可能是支付网关api等),该api将被其他公司或您公司以外的开发人员使用。所以现在您不能显示/共享您的实现类(实际代码)。您将共享您的接口方法,他们将利用它。就是这样。

再举一个电视遥控器的例子,开发电视遥控器的人只是给我们提供了一些按钮,比如音量上升,下降,下一步等等。这些按钮是如何工作的并不让我们头疼。

 类似资料:
  • 今天,我试图学习Java8中的一些特性,特别是关于Lambda表达式。我创建了一个新的Comaparator,如下所示: 当我阅读比较器接口内的代码时,我感到困惑。虽然通过接口比较器有两个方法compare()和equals(),但我们不需要全部实现它们。我已经找到了一些原因,为什么我们不需要在这里实现方法equals()。但我也读过javadocs 如果类声明实现接口,则该接口定义的所有方法必须

  • 我有这个HTML块来控制一个数量: 下面是jQuery代码: 我的问题是因为我在很多地方都有HTML,JS代码控制所有的块,而它应该控制选定的块。 请问我怎么换这个? 多谢了。

  • 问题内容: 我正在浏览以下代码示例: 我想知道使用Iterator接口的实现而不是使用普通的for-each循环有什么好处? 如果此示例不相关,那么当我们应该使用Iterator时会是一个好的情况吗? 谢谢。 问题答案: 该 for-each循环 与Java 5中引入的,所以它不是那么“老”。 如果只想迭代一个集合,则应为每个循环使用 但是有时“普通的” 迭代器的 方法对于检查 迭代器 是否还有更

  • 问题内容: 我的单元测试与集成测试位于单独的目录树中,但是具有相同的包结构。我的集成测试需要外部资源(例如服务器)可用,但是我的单元测试彼此之间以及与环境之间是完全独立的。 在IntelliJ-IDEA(v7)中,我定义了一个JUnit运行/调试配置,以运行顶层程序包中的所有测试,并且这当然会拾取失败的集成测试。 我想定义一个运行所有单元测试的运行junit配置。有任何想法吗? 问题答案: 答案是

  • 我尝试了“New Query”选项,右键单击我的表并从代码中复制粘贴插入行,结果工作得很好,所以我不知道代码中的行为什么不工作。 我尝试在try块中粘贴executenonquery行,它确实在我的屏幕上写了“success”,但插入行没有执行。

  • 问题内容: 我只是想知道什么是确定的利益/用途 用于在数据类型? 问题答案: 选择带有类型的列时,它将用零填充字段的显示值,直到字段定义中指定的显示宽度。大于显示宽度的值不会被截断。请注意,的使用还意味着。 使用和显示宽度不会影响数据的存储方式。它仅影响其显示方式。 以下是一些示例SQL演示了如何使用: 结果: