16_傳智播客Spring2.5視頻教程_使用CGLIB實現AOP功能與AOP概念解釋

代理對象 和目標對象 沒有實現接口

將代理對象 設置成 目標對象的 子類

 

package xxl.aop.one.service.proxy;

import java.lang.reflect.Method;

import xxl.aop.one.service.impl.PersonServiceBean;

import net.sf.cglib.proxy.Enhancer;
import net.sf.cglib.proxy.MethodInterceptor;
import net.sf.cglib.proxy.MethodProxy;

public class CGlibProxyFactory implements MethodInterceptor {

 // 目標對象
 private Object argertObject = null;
 public  Object createProxyInctance(Object object) {
       
  this.argertObject = object;
  
  //代理對象類
  Enhancer enhancer = new Enhancer();
  
  //將目標對象設置爲代理對象的父類
  enhancer.setSuperclass(object.getClass());
  
  //設置本身爲 回調用對象
  enhancer.setCallback(this);
  
  // 生成並返回代理對象
  return enhancer.create();

 }
 /**
  * @param proxyObject 代理對象
  * @param method 被攔截到的方法
  * @param args 被攔截到的方法的參數列表
  * @param methodProxy 代理方法對象
  */
 public Object intercept(Object proxyObject, Method method, Object[] args,
   MethodProxy methodProxy) throws Throwable {
  PersonServiceBean bean = (PersonServiceBean) this.argertObject;
  Object result = null;
  if (bean.getUser() != null){
   result = methodProxy.invoke(this.argertObject, args);
  }
  return result;
 }
}

發佈了48 篇原創文章 · 獲贊 3 · 訪問量 4萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章