溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

動態代理模擬實現aop的示例

發布時間:2020-10-21 23:53:09 來源:腳本之家 閱讀:192 作者:C_凱 欄目:編程語言

AOP實現起來代碼相當簡單.主要核心是動態代理和反射.

一.接口類:

public interface MethodDao { 
   public void sayHello(); 
}

二.接口實現類:

public class MethodImpl implements MethodDao { 
  public void sayHello() 
  { 
    System.out.println("hello world"); 
  } 
}

三.編寫動態代理類DynamicProxy,***實現InvocationHandler接口

public class DynamicProxy implements InvocationHandler {
 private Object object;
 /**
 
 * <p>Title: </p>
 * <p>Description: </p>
 * 接受被代理類
 */
 public DynamicProxy(Object object) {
  this.object=object;
  // TODO Auto-generated constructor stub
 }
 /* (non-Javadoc)
  * @see java.lang.reflect.InvocationHandler#invoke(java.lang.Object, java.lang.reflect.Method, java.lang.Object[])
  *實現invoke方法,在方法執行之后添加操作
  */
 public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
  // TODO Auto-generated method stub
  System.out.println("=====方法執行前=======");
  method.invoke(object, args);
  System.out.println("=====方法執行后=======");
  return null;
 }
}

四.編寫測試類:

public class Test { 
  public static void main(String[] args) { 
     MethodDao methodDao=new MethodImpl(); 
     InvocationHandler handler = new DynamicProxy(methodDao); 
     //第一個參數是類加載器,與handler相同; 
     //第二個是參數對象實現的接口,如果沒有的話需要使用cdlib 
     //第三個參數是InvocationHandler. 
     //該類返回的其實是MethodImpl類 
     methodDao=(MethodDao) Proxy.newProxyInstance(handler.getClass().getClassLoader(), methodDao.getClass().getInterfaces(), handler); 
     methodDao.sayHello(); 
  } 
   
   
} 

五.查看控制臺輸出:

=====方法執行前=======
hello world
=====方法執行后=======

六.總結:

通過上面的代碼可以總結出AOP的應用場景:

1.事務管理,(事務的開啟跟提交可以直接交由aop來處理,程序員可以更加專注于業務)

2.日志管理(在方法調用的前后可以打印日志)

3.權限管理(比如登錄驗證.管理員權限等,在調用某個方法時,如果權限不夠也可以提示).

以上這篇動態代理模擬實現aop的示例就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持億速云。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女