天天看點

spring AOP JDK動态代理實作

spring AOP JDK動态代理實作

首先建立一個接口 UserDao

spring AOP JDK動态代理實作

 然後建立一個實作類 UserDaoImpl

spring AOP JDK動态代理實作

 當我們需要對已有的接口進行增強時,我們就可以使用Proxy,建立接口的代理對象

spring AOP JDK動态代理實作

對于Proxy類的newProxyInstance方法的第三個參數,可以使用匿名内部類,如上。也可以通過建立實作InvocationHandler的方法傳入。

spring AOP JDK動态代理實作

 我們通過這個實作InvocationHandler接口的類建立Proxy對象

spring AOP JDK動态代理實作

 為了能增強UserDao的功能,我們需要把UserDao傳入我們的UserDaoProxy類中,這樣可以調用UserDao已經實作的方法。做法是利用有參構造函數。

spring AOP JDK動态代理實作

 然後我們實作增強的邏輯

spring AOP JDK動态代理實作

 這樣我們就可以用代理對象來增強已有方法了

spring AOP JDK動态代理實作

執行結果:

spring AOP JDK動态代理實作

繼續閱讀