SpringBoot中,为什么不直接使用Service写功能,还要有ServiceImpl

3393 / 2025-08-06 15:10:08 世界杯介绍

SpringBoot中,为什么不直接使用Service写功能,还要有ServiceImpl

1.注入service2.为什么service两层3.一个接口多个实现类

自己作为一个菜鸟,学习嘛!就要多问为什么?? 都是service层,为什么会有两个情况

service层=service类service层=service接口+serviceImpl实现类

1.注入service

为什么注入service,而不是serviceImpl?

我们使用 @Autowired注解进行自动装配,在装配或者注入的时候都是先实例化后,再往下进行。 所以这里虽然注入的是service接口,但实际上注入的是该接口的实现类。

2.为什么service两层

当项目比较简单的时候,需求明确,变更不频繁或者几乎不怎么修改的时候,用第一种就好了

service层=service类

当项目比较复杂,需求变更多的时候,用第二种比较好

service层=service接口+serviceImpl实现类

这种方式好处:

核心就是解耦合便于扩展,可以多条路去实现

3.一个接口多个实现类

service层

public interface HumanService {

String getName();

}

@Service("teacherService")

public class TeacherServiceImpl implements HumanService {

@Override

public String getName() {

return "this is a teacher";

}

}

@Service("studentService")

public class StudentServiceImpl implements HumanService {

@Override

public String getName() {

return "this is a student";

}

}

controller层

@RestController

public class HumanController {

@Autowired

@Qualifier("teacherService")

private HumanService teacherService;

@Autowired

@Qualifier("studentService")

private HumanService studentService;

@RequestMapping("/name")

public void getName(){

System.out.println(teacherService.getName());

System.out.println(studentService.getName());

}

}