我有一个由 Spring 管理的 c3p0.ComboPooledDataSource,用于管理我的数据库连接。当我从一个连接中获取 PreparedStatement 实例时,我发现 C3P0 实际上正在返回一个实现 PreparedStatement 接口的 NewProxyPreparedStatement 类的实例。美好的。
但是,当我调用定义为本合同一部分的一些方法时,我得到以下 RuntimeException java.lang.AbstractMethodError: com.mchange.v2.c3p0.impl.NewProxyPreparedStatement.isClosed()Z
查看源代码,我可以看到这个类没有提供许多方法,这些方法被概述为 Statement 和 PreparedStatement 契约的一部分。此代码不应编译。我觉得我错过了一些重要的东西,但在这里相当先进。这怎么可能作为图书馆的一部分运送?
我希望使用 PreparedStatement.isClosed 方法,是我应该将这些对象的管理留给 Spring 的实际潜在问题吗?