项目里使用了 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;
这样就可以正常注入了