博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Spring的注解@Qualifier小结
阅读量:6905 次
发布时间:2019-06-27

本文共 2061 字,大约阅读时间需要 6 分钟。

 还有另一种方式就是使用applicationContext.getBean(beanName) 的方式

  近期在捯饬spring的注解,现将遇到的问题记录下来,以供遇到同样问题的童鞋解决~

  先说明下场景,代码如下:

有如下接口:

public interface EmployeeService {    public EmployeeDto getEmployeeById(Long id);}

 

同时有下述两个实现类 EmployeeServiceImpl和EmployeeServiceImpl1:

@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@RequestMapping("/emplayee.do")public class EmployeeInfoControl {        @Autowired    EmployeeService employeeService;         @RequestMapping(params = "method=showEmplayeeInfo")    public void showEmplayeeInfo(HttpServletRequest request, HttpServletResponse response, EmployeeDto dto) {        #略    }}

 

 

  在启动tomcat时报如下错误:

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'employeeInfoControl': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire field: com.test.service.EmployeeService com.test.controller.EmployeeInfoControl.employeeService; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No unique bean of type [com.test.service.EmployeeService] is defined: expected single matching bean but found 2: [service1, service2]

  其实报错信息已经说得很明确了,在autoware时,由于有两个类实现了EmployeeService接口,所以Spring不知道应该绑定哪个实现类,所以抛出了如上错误。

这个时候就要用到@Qualifier注解了,qualifier的意思是合格者,通过这个标示,表明了哪个实现类才是我们所需要的,我们修改调用代码,添加@Qualifier注解,需要注意的是@Qualifier的参数名称必须为我们之前定义@Service注解的名称之一!

@Controller@RequestMapping("/emplayee.do")public class EmployeeInfoControl {        @Autowired    @Qualifier("service")    EmployeeService employeeService;        @RequestMapping(params = "method=showEmplayeeInfo")    public void showEmplayeeInfo(HttpServletRequest request, HttpServletResponse response, EmployeeDto dto) {        #略    }}

 

 问题解决!

转载地址:http://mpldl.baihongyu.com/

你可能感兴趣的文章
HTML5打造的炫酷本地音乐播放器-喵喵Player
查看>>
WPF命中测试示例(二)——几何区域命中测试
查看>>
ArrayList、linklist、list的区别
查看>>
Linux下的lds链接脚本基础
查看>>
【ASP.NET】关于iframe的两个技巧
查看>>
Django 数据库查询
查看>>
Excel将秒转换成标准的时间格式HH:MM:SS
查看>>
迁移已有的虚拟机
查看>>
sql server 2008有关SQL的模糊查询
查看>>
ECMall中Widgets模式的布局引擎
查看>>
细说UI线程和Windows消息队列
查看>>
Centos6.4 xen编译部署
查看>>
开源免费的C/C++网络库(c/c++ sockets library)
查看>>
win7下jdk安装环境变量配置
查看>>
UVA 1484 - Alice and Bob's Trip(树形DP)
查看>>
C语言求最大公约数和最小公倍数
查看>>
遭遇Asp.Net长文件名下载的问题和解决办法
查看>>
02. SQL表达式的灵活使用
查看>>
【机器学习算法-python实现】决策树-Decision tree(1) 信息熵划分数据集
查看>>
最新的goldengate monitor 12.1.3已经发布
查看>>