如何根据不同的用户使用不同的jdbcTemplate数据源?

如何根据不同的用户使用不同的jdbcTemplate数据源?

问题描述:

公司有一项目,使用的是spring JDBCTemplate 作为数据库连接池,现在需求变更了,需要根据不同的用户访问不同的数据源。
根据用户找出数据库名很容易办到,现在的问题是如何如何在不同的request里面使用不同的数据源?或者说 jdbctemplate 如何做到多数据源?
谢谢大家了。

org.springframework.jdbc.datasource.lookup.AbstractRoutingDataSource这个类就是解决这种问题的。
具体说,实现 protected Object determineCurrentLookupKey()这个方法返回一个key,protected DataSource determineTargetDataSource()这个方法根据你的key找出数据源。
一般是用ThreadLocal保存一个标志,再用这个类,根据标志找出TargetDataSource。对于web应用,一般用filter,请求开始时放入标志,在请求结束后清除标志。

嗯嗯 ,学习到了,明白了!!!!!!