Spring中 如果该Service有多个实现类,它怎么知道该注入哪个ServiceImpl类?

Posted zoe-java

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Spring中 如果该Service有多个实现类,它怎么知道该注入哪个ServiceImpl类?相关的知识,希望对你有一定的参考价值。

1.每个service的impl都可以指定名称(使用@Service(“名称”))

2.Controller中注入service的时候使用名称来指定注入哪一个。

  (1).

  @Autowired
@Qualifier("名称") 

  (2).

  @Resource(name="名称")

 

代码如下:

接口
public interface HumanService 
public String name();
接口实现类 
@Service("teacherService")
public class TeacherServiceImpl implements HumanService
@Override
public String name()
System.out.println("teacher");
return "teacher";


@Service("doctorService")
public class DoctorServiceImpl implements HumanService
@Override
public String name()
System.out.println("doctor");
return "doctor";

控制器 

@RestController
public class HumanController
// @Resource(name="doctorService")
    @Autowired
@Qualifier("teacherService")
private HumanService humanService;

@RequestMapping("/name")
public String name()
return humanService.name();

 

 

以上是关于Spring中 如果该Service有多个实现类,它怎么知道该注入哪个ServiceImpl类?的主要内容,如果未能解决你的问题,请参考以下文章

spring调用方法(接口和多个实现类的情况)

Spring常用注解

spring注解@service("service")括号中的service有什么用

SpringSpringboot常用注解:@Qualifier(不定时更新)

关于spring注解无法注入,我在service的实现类用@service(“accountSer

springboot中如何注入一个多个实现类service接口