Spring : JdbcTemplate with CompletableFuture runAsync generate 此连接已关闭

问题描述

我有这个方法来运行查询

class QueryExecutor {
  private List<T> executeOn(String tableName) {
    ResultSetExtractor<List<Pojo>> resultSetExtractor =
            JdbcTemplateMapperFactory
                    .newInstance()
                    .addKeys("id")
                    .newResultSetExtractor(Pojo.class);

    return emptyIfNull(jdbcTemplate.query("select * from " +  tableName,resultSetExtractor));
  }
}

在我的控制器中,我只注入了 QueryExecutor,一切都很好。

当我跑步时:

CompletableFuture.runAsync(() -> queryExecutor.executeOn("my_table"));

我收到此异常:

org.springframework.dao.DataAccessResourceFailureException: 语句回调; sql [select * from my_table];这个连接有 已关闭。嵌套异常是 org.postgresql.util.PsqlException: 此连接已关闭

enter image description here

我的配置是:

@Primary
@Bean(name = "dataSource")
@ConfigurationProperties(prefix = "spring.datasource.hikari")
public HikariDataSource dataSource() {
    return dataSourceProperties().initializeDataSourceBuilder()
            .type(HikariDataSource.class).build();
}

@Bean(name = "jdbcTemplate")
public JdbcTemplate jdbcTemplate(@Qualifier("dataSource") DataSource dataSource) {
    return new JdbcTemplate(dataSource);
}

有什么想法吗?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)