在不修改源代码的情况下拦截java.sql.Statement类增强,可以使用cglib来实现。
cglib创建代理类的方式是使用Enhancer#create()方法,手动调用才能触发Callback的钩子函数。如果需要拦截Statement类,可以采用以下方法:
- 代理Connection对象:通过代理Connection对象,修改其getConnection方法,返回一个代理Statement对象。
- 修改DataSource:重写DataSource的getConnection方法,直接返回一个代理Statement对象。
这样,业务代码无需修改,即可对Statement类进行拦截增强。
立即学习“Java免费学习笔记(深入)”;