SpringBoot中,为什么不直接使用Service写功能,还要有ServiceImpl
自己作为一个菜鸟,学习嘛!就要多问为什么?? 都是service层,为什么会有两个情况
- service层=service类
- service层=service接口+serviceImpl实现类
1.注入service
为什么注入service,而不是serviceImpl?
我们使用 @Autowired注解进行自动装配,在装配或者注入的时候都是先实例化后,再往下进行。 所以这里虽然注入的是service接口,但实际上注入的是该接口的实现类。
2.为什么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());
}
}
|