我已经阅读了几篇关于使用Spring DataSource获取Connection的文章。
但是在我们的公司设置中,连接对象是通过已配置的环境获得的。以下示例代码:
String pool = PropertyFileReader.getPropertyValue("database.properties", "development.connectionPool");
Connection connection = RequestUtils.getConnection(pool);
因此,在阅读此tutorial
之后我对使用JDBCTemplate使用上面代码中的连接对象感到困惑。
答案 0 :(得分:3)
我认为JdbcTemplate不是按照您的预期来对抗Connection的。作为一种解决方法,如果您可以为您创建的每个连接创建单独的JdbcTemplate,则可以将连接包装在DataSource的瘦包装中,并将其提供给JdbcTemplate。
我认为它应该有用,但我还是没试过......
class SingleConnectionDataSource implements DataSource {
private Connection connection;
public SingleConnectionDataSource(Connection connection) {
this.connection = connection;
}
public Connection getConnection() {
return this.connection;
}
public Connection getConnection(String username, String password) {
return this.connection;
}
}
// at the place you want to use JdbcTemplate
Connection conn = blablabla; // your own way to get it
JdbcTemplate jdbcTemplate = new JdbcTemplate(new SingleConnectionDataSource(conn));
答案 1 :(得分:2)
实际上,Spring已经提供了SingleConnectionDataSource实现(见4.1.7版)。
它甚至允许您通过模板来抑制连接关闭。