我有一个使用Spring 3.1.1的Web应用程序.
我们有一个使用JdbcTemplate的genericDao.数据源正在GenericDaoImpl中注入.
public class GenericDaoImpl implements GenericDao {
protected Class entityClass;
protected JdbcTemplate jdbcTemplate;
@Autowired
public void setDataSource(DataSource dataSource) {
this.jdbcTemplate = new JdbcTemplate(dataSource);
}
....
@Override
public List findAll(String sql,ParameterizedRowMapper mapper,Object... args) {
return jdbcTemplate.query(sql,mapper,args);
}
}
这是一个简单的DAO.
@Repository
public class ElementDaoImpl extends GenericDaoImpl implements ElementDao {
private static ParameterizedRowMapper mapper = new ParameterizedRowMapper() {...};
public List findChildren(int id) {
sql = "SELECT....";
return findAll(sql,new Object[] {id});
}
}
暂时,借助独特的数据源,它可以完美运行.
applicationContext配置有注释.
现在,我必须仍然使用genericDao来集成一个新的DAO,但是要在另一个数据库上工作(因此是另一个数据源).
我在服务中使用@Transactionnal.我阅读了Spring文档,我们可以为交易指定条件,以便选择优秀的交易管理器.
因此,我创建了一个新的数据源,一个新的事务管理器…
在我的新服务上,我已将该值添加到@Transactionnal批注中:
@Transactionnal("txSecond")
要恢复,我有4个类来管理新数据库:服务接口,@Transactionnal(“ txSecond”)服务实现,DAO接口,基于genericDao的DAO实现,在注入的数据源上创建了JdbcTemplate对象.
我创建了一个Junit测试,但是暂时,我阻止了一个异常:NoSuchBeanDefinitionException:没有定义类型javax.sql.DataSource的唯一bean.预期单个匹配的Bean,但找到了2个(firstD,SecondD).
我认为pb是genericDao,但不确定.
如何处理?
谢谢.