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) {
}
}
推荐阅读
-
spring Boot环境下dubbo+zookeeper的一个基础讲解与示例
-
浅谈Spring中@Import注解的作用和使用
-
spring boot 2 全局统一返回RESTful风格数据、统一异常处理
-
在 Spring Boot 项目中使用 activiti
-
Spring Boot2.X整合消息中间件RabbitMQ原理简浅探析
-
spring boot2 修改默认json解析器Jackson为fastjson
-
一起学Spring之AOP
-
Spring Boot 2 + Thymeleaf:表单字段绑定、表单提交处理
-
Spring事务处理流程和原理详解
-
浅谈Spring自定义注解从入门到精通