java - 传递到 Spring JDBC LobHandler 后关闭 Java InputStream?

标签 java spring jdbc blob inputstream

在这样的代码中传递给Spring JDBC lobCreator.setBlobAsBinaryStream(,,)后是否需要手动关闭java中的InputStream(bean.getContentAsStream())?

 getJdbcTemplate().execute(
                "INSERT INTO file (" +
                "id, " +                      //1
                "FILE_DATA) " +               //2
                " VALUES (?, ?)",
                 // lobhandler is instance of org.springframework.jdbc.support.lob.OracleLobHandler
                new AbstractLobCreatingPreparedStatementCallback(lobhandler){
                    @Override
                    protected void setValues(PreparedStatement ps, LobCreator lobCreator) throws SQLException, DataAccessException {
                        ps.setString(1, bean.getRecordId());
                        lobCreator.setBlobAsBinaryStream(ps, 2, bean.getContentAsStream(), (int) bean.getContentSize());
                    }
                });

最佳答案

我预计 spring 会关闭它,但文档没有说。您可以通过创建一个记录消息或在关闭时引发异常的 InputStream 包装器来轻松进行测试。

关于java - 传递到 Spring JDBC LobHandler 后关闭 Java InputStream?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10946849/

相关文章:

java - JSP - Servlet 未正确转发到 JSP

java - Eclipse 无法识别 listFiles(Filter paramFileFilter)

java - 即使指定日期格式后,Jackon 2.4.2 也无法反序列化有效日期

java - 如何从输入文件获取二维数组看起来像字段

java - Swagger @ApiParam 注释使在 Swagger UI 中不需要使用 @PathVariable 注释的参数

java - 这个 java MySQL 异常的原因(和处理)是什么?

java - Spring 集成: Force Webservice Outbound Gateway to Use TLSv1

java - 如何使用 Gitlab CI 构建 Java Maven 项目?

jdbc - OCI JDBC 驱动程序和 NLS 设置

java - 失败 - 上下文路径/mycompany 中的应用程序无法启动