欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Spring @Qualifier注解

程序员文章站 2022-05-24 14:34:57
...

场景介绍:

有一个接口如下:

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) {

    }
}