在applicationContext.xml中配置了一个新的DataSource,同时,添加一个新的jdbcTemple,代码如下:
<bean id="hrjdbcTemple" class="org.springframework.jdbc.core.JdbcTemplate">
<property name="dataSource" ref="hrdataSource"/>
</bean>
但是,在项目启动时,报了这样的错误,如下:
expected single matching bean but found 2: jdbcTemple, hrjdbcTemple
起初,怀疑是datasource的问题,但是不过我如何尝试,都说明datasource是没有任何问题的。于是,从jdbcTemple入手,查找了下网上资料,实例化jdbcTemple大概有三种,由于项目是用扫描注入的,所以有些方法就用不了。于是,从配置注入的想法暂时取消,上面配置只好暂时作罢,先注释掉了。以下是我从代码中实例化jdbcTemple的方法,如下:
private JdbcTemplate hrjdbcTemplate;
@Autowired
public void setHrjdbcTemplate(@Qualifier("hrdataSource") DataSource dataSource) {
this.hrjdbcTemplate = new JdbcTemplate(dataSource);
}
此代码是直接写在service中的。
说明:
为了跟项目中原有的jdbcTemple做区分,这里用hrjdbcTemplate,实例其实是一样的。
这里要注意的是DataSource,这个是比较关键的,@Qualifier(“hrdataSource”)
这个是配置文件中配置的新数据源,在这里明确指定。
关于DataSource的导入jar,也是个问题,因为配置文件中使用的是tomcat的pool下的DataSource,所以这里也使用该jar,但是编译就一直报错,查看了下jar都有。后来改成了java.sql下面的jar,就OK了。原因未知!
虽然,目前是可以正常运行,但是对于以上情况也是一知半解的。