2012-10-22 20 views
0

我有一個要求鉤住excisting類的方法並做某種記錄。這些類被寫入並作爲Jars放入應用程序中。我的場景中的一個典型示例如下。Hook JDBC Connection.Close()方法

  1. 我們打開一個連接(java.sql.Connection中),當所有的DB opertaions完成關閉連接。我在這裏想要的是每次調用Connection.close()方法時調用一個自定義方法。我無法爲連接創建自定義分類,因爲代碼更改對於此項目將非常巨大。

有沒有辦法鉤住Close方法。在Java中可以鉤住方法嗎?

任何幫助表示讚賞。謝謝。

回答

0

有幾種方法:

  • 使用java.lang.reflect.Proxy並有InvocationHandler的做更多的事情,當close()
  • 寫一個擴展Connection(基本上是一樣的代理的包裝,除了你必須實現所有方法自己和它們鏈接到包含連接)
  • 我從來沒有使用過,但我相信的AspectJ允許您使用添加行爲pointcuts
+0

寫了一個擴展了java.sql.Connection類的Wrapper類,並實現了調用Super類方法的所有方法。 – Prakashm88