场景介绍:
有一个接口如下:
public interface EmployeeService {
public EmployeeDto getEmployeeById(Long id);
}
有两个实现类同时实现了这个接口:
@Service("service")
public class EmployeeServiceImpl implements EmployeeService {
public EmployeeDto getEmployeeById(Long id) {
return new EmployeeDto();
}
}
@Service("service1")
public class EmployeeServiceImpl1 implements EmployeeService {
public EmployeeDto getEmployeeById(Long id) {
return new EmployeeDto();
}
}
在Controller调用时:
@Controller
@RequestMapping("/emplayee")
public class EmployeeInfoControl {
@Autowired
EmployeeService employeeService;
@GetMapping(value = {"/selectEvalCourse/{emplayeeId}"})
@ResponseBody
public Result showEmplayeeInfo(@PathVariable("emplayeeId") String emplayeeId) {
}
}
在启动项目的时候就会报错,因为有两个实现类实现接口,spring不知道应该绑定那个实现类,所以抛出错误。
@Qualifier就是为了解决这个问题,其参数名称必须为我们之前定义的@Service注解的名称之一,如下:
@Controller
@RequestMapping("/emplayee")
public class EmployeeInfoControl {
@Autowired
@Qualifier("service")
EmployeeService employeeService;
@GetMapping(value = {"/selectEvalCourse/{emplayeeId}"})
@ResponseBody
public Result showEmplayeeInfo(@PathVariable("emplayeeId") String emplayeeId) {
}
}