【发布时间】:2021-05-02 18:38:25
【问题描述】:
当 spring 被引入时,它的建议是在不同层之间使用接口,例如 Controller、Service、DAO,而不是使用实际的类引用直接调用它们。
在 Spring 5.x 和 Spring Boot 2.x 的新时代,我们还需要在 Controller 和 Service 类之间使用接口吗?就我而言,我正在开发一个带有单个 GET 方法的 REST 应用程序,该方法调用 DB 并执行一些业务逻辑。所以在我的服务中,在这种情况下我只有一种方法,我仍然需要使用 ServiceInterface 来调用我的实际 ServiceImpl?什么是最佳实践?在这种情况下使用 ServiceInterface 有什么具体优势?
下面是没有ServiceInterface的示例代码
public class MyTestController{
private MyTestServiceImpl myTestServiceImpl;
public MyTestController(MyTestServiceImpl myTestServiceImpl){
this.myTestServiceImpl = myTestServiceImpl;
}
@GetMapping("/test")
public String getTestString(){
myTestServiceImpl.getTestString();
}
}
@Service
public class MyTestServiceImpl(){
private MyTestRepository myTestRepository;
//constructor
//Service method impl
}
【问题讨论】:
-
原因是依赖倒置原则(SOLID设计原则中的D)。如果您的问题是,即使在一个简单的应用程序中,我也应该始终这样做吗?我会说不。这些原则旨在帮助您编写可维护的软件。如果那不是您想要的,或者如果软件太简单以至于它实际上会妨碍您。不要这样做。
-
@p.streef 是的,我的问题是我是否需要一直使用它。感谢您的澄清。
标签: spring spring-boot spring-mvc