2

由于许多我不愿透露的原因(冗长而无聊的故事),我需要捕捉复杂应用程序与数据库的交互。该应用程序构建在 Spring/JdbcTemplate 之上,我需要找到该应用程序发出的所有 SQL。我怎样才能以最简单的方式做到这一点?

创建 JdbcTemplate 的伪模拟实现似乎不合理。首先 JdbcTemplate 是一个类而不是一个接口。其次,它的接口很大,实现起来很乏味。我正在考虑模拟DataSource并将Connection所有 SQL 发送出去,但也许有更简单的方法可以做到这一点?

4

2 回答 2

4

例如,这种问题非常巧妙地解决了。P6间谍。有一篇很好的文章介绍了如何让它与 Spring 一起工作。

希望有帮助。

于 2012-11-30T11:13:23.783 回答
2

捕获所有 SQL 输出的唯一方法是成为应用程序和数据库之间的接触点。这意味着,从实际处理 JDBC 交互的库实现中装饰DataSourceConnection和所有类型的Statements,并记下在SimpleJdbcTemplatebean 定义中指定的装饰数据源的装饰连接上运行的所有语句。从可维护性的角度来看,在其他任何时候捕捉到这一点都是具有挑战性的。

于 2012-11-30T10:51:11.903 回答