Spring相同类型多个实例化时候的Autowired异常:No qualifying bean of type [xxxxx] is defined: expected single matching bean but found 4

项目里使用了 Spring 的jdbcTemplate.每个数据源一个jdbcTemplate.在注入到service层的时候代码这么写的。@Autowired private JdbcTemplate tcJdbcTemplate; @Autowired privat...

项目里使用了 Spring 的jdbcTemplate.

每个数据源一个jdbcTemplate.

在注入到service层的时候代码这么写的。

@Autowired
private JdbcTemplate tcJdbcTemplate;
	
@Autowired
private JdbcTemplate ypJdbcTemplate;
	
@Autowired
private JdbcTemplate mdmsTemplate;

运行时就爆出了异常异常时这样的

Caused by: org.springframework.beans.factory.NoUniqueBeanDefinitionException: No qualifying bean of type [org.springframework.jdbc.core.JdbcTemplate] is defined: expected single matching bean but found 4: gbbarcodeJdbcTemplate,tcJdbcTemplate,ypJdbcTemplate,mdmsJdbcTemplate
	at org.springframework.beans.factory.config.DependencyDescriptor.resolveNotUnique(DependencyDescriptor.java:172)
	at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1064)
	at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1018)
	at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:566)
	... 57 more


异常的信息很简单就是:

妈的,老子分不清,该把那个对象注入到哪个变量里!!!!


这时候光是 @Autowired 已经无法满足我们的需求了

这时候我们就需要另一个注解 @Qualifier 的加入,这个注解需要一个参数,就是Bean的ID。

用法就是

@Autowired
@Qualifier("ypJdbcTemplate")
private JdbcTemplate ypJdbcTemplate;

这样就可以正常注入了

条评论

请先 登录 后评论
不写代码的码农
三叔

422 篇文章

作家榜 »

  1. 小编 文章
返回顶部
部分文章转自于网络,若有侵权请联系我们删除