在Springboot中,一般接口是单实现的话,只需要直接注入即可。
但当接口有多个实现的时候就不能直接注入,会报错提示有多个实现类。
有几种方式可以解决:
一.写死,加上 @Qualifier(“XXX”)就好了,用于指定注入那个实现类
@Autowired
@Qualifier("studentService")
private PersonService personService;
二.通过Map注入,通过spring bean的名称作为key动态获取对应实例;
@Autowired
private Map<String,PersonService> personServiceMap;
@Test
public void testMutiImpl(){
String key="studentService";
//此处的key可以写死在常量类中,或则实时根据策略从数据库中获取;
//通过spring bean的名称作为key获取对应实例;
PersonService personService = personServiceMap.get(key);
personService.doWork();
}
三、 List:spring会自动将PersonService的所有实现类bean注入到list集合
@Autowired
private List<PersonService> services;/