spring中怎么注入两个实现同一个接口的bean

javax123 2016-02-19 09:38:05
有一个接口,但是两个service都实现了这个接口,用注解service的时候会报异常,expected single matching bean but found 2
问下各位大神有什么方法
...全文
9575 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq_37330248 2017-07-14
  • 打赏
  • 举报
回复 1
在楼上的基础上,在创建bean的时候,在其中一个多加个注解,@Primary,确定这个为主,其他为次,主只能有一个,次可以有多个
shmy110 2016-03-09
  • 打赏
  • 举报
回复
@Qualifier("XXX") 这个事肯定可以的。楼上有人回答过了。你多试试
e312dsa 2016-02-22
  • 打赏
  • 举报
回复
@Autowired @Qualifier("XXX") 或者 @Resource(name=“XXX”)
Mr_yyy 2016-02-22
  • 打赏
  • 举报
回复
楼上的方法都是可行的,如果还是报错的话,你先试试把其中一个子类先注释掉试试,看看问题的原因是不是因为多实现的事!
scmod 2016-02-22
  • 打赏
  • 举报
回复
引用 8 楼 javax123 的回复:
[quote=引用 7 楼 scmod 的回复:] [quote=引用 2 楼 javax123 的回复:] [quote=引用 1 楼 scmod 的回复:] 用Map<String, 接口名>或者List<接口名>,map的String一般是你实现类的名字首字母小写
用@Service不行,@Resource获取不了,而且项目启动会报错啊[/quote] @Autowired.....[/quote] 都试过了都不行的[/quote] 那就不知道了..我一直是这样可以的~
u013146383 2016-02-22
  • 打赏
  • 举报
回复
先将两个bean取不同的名字,注入的时候写上名字啊。
scmod 2016-02-20
  • 打赏
  • 举报
回复
引用 2 楼 javax123 的回复:
[quote=引用 1 楼 scmod 的回复:] 用Map<String, 接口名>或者List<接口名>,map的String一般是你实现类的名字首字母小写
用@Service不行,@Resource获取不了,而且项目启动会报错啊[/quote] @Autowired.....
javax123 2016-02-20
  • 打赏
  • 举报
回复
引用 7 楼 scmod 的回复:
[quote=引用 2 楼 javax123 的回复:] [quote=引用 1 楼 scmod 的回复:] 用Map<String, 接口名>或者List<接口名>,map的String一般是你实现类的名字首字母小写
用@Service不行,@Resource获取不了,而且项目启动会报错啊[/quote] @Autowired.....[/quote] 都试过了都不行的
javax123 2016-02-19
  • 打赏
  • 举报
回复
引用 4 楼 pl3121605999 的回复:
....设置根据名称注入而不是根据类型 即可,,可以百度 byName 与byType
换了名字也不行,他们都是实现的同一个接口
javax123 2016-02-19
  • 打赏
  • 举报
回复
引用 3 楼 u014369169 的回复:
使用 @Service("testService1") 和@Service("testService2") ,需要哪个实现类就接口上使用@Resource(name="testService1") 或@Resource(name="testService2"),就是不同实现类注入时候名字不同,在接口注入时根据不同名字来注入
试过了,不行的
pl3121605999 2016-02-19
  • 打赏
  • 举报
回复
....设置根据名称注入而不是根据类型 即可,,可以百度 byName 与byType
花形翼 2016-02-19
  • 打赏
  • 举报
回复
使用 @Service("testService1") 和@Service("testService2") ,需要哪个实现类就接口上使用@Resource(name="testService1") 或@Resource(name="testService2"),就是不同实现类注入时候名字不同,在接口注入时根据不同名字来注入
javax123 2016-02-19
  • 打赏
  • 举报
回复
引用 1 楼 scmod 的回复:
用Map<String, 接口名>或者List<接口名>,map的String一般是你实现类的名字首字母小写
用@Service不行,@Resource获取不了,而且项目启动会报错啊
scmod 2016-02-19
  • 打赏
  • 举报
回复
用Map<String, 接口名>或者List<接口名>,map的String一般是你实现类的名字首字母小写

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧