没有dataSource的Spring JDBC连接

时间:2012-07-04 09:49:41

标签: spring jdbctemplate spring-jdbc

我已经阅读了几篇关于使用Spring DataSource获取Connection的文章。

但是在我们的公司设置中,连接对象是通过已配置的环境获得的。以下示例代码:

 String pool = PropertyFileReader.getPropertyValue("database.properties", "development.connectionPool");

    Connection connection = RequestUtils.getConnection(pool);

因此,在阅读此tutorial

之后

我对使用JDBCTemplate使用上面代码中的连接对象感到困惑。

2 个答案:

答案 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版)。

它甚至允许您通过模板来抑制连接关闭。