0、能夠代理實現類java
一、被代理類spring
/** * 被代理類 */ public class Cat { public void cry() { System.out.println("喵喵喵"); } }
二、實現MethodInterceptor接口ide
import org.springframework.cglib.proxy.MethodInterceptor; import org.springframework.cglib.proxy.MethodProxy; import java.lang.reflect.Method; /** * 實現MethodInterceptor接口 */ public class CatMethodInterceptor implements MethodInterceptor { /** * 生成方法攔截器 * @param o 要進行加強的對象 * @param method 攔截的方法 * @param objects 參數列表 * @param methodProxy 方法的代理 * @return * @throws Throwable */ @Override public Object intercept(Object o, Method method, Object[] objects, MethodProxy methodProxy) throws Throwable { System.out.println("——————調用前處理——————"); //對被代理對象方法的調用 Object object = methodProxy.invokeSuper(o, objects); System.out.println("——————調用後處理——————"); return object; } }
三、測試測試
import org.springframework.cglib.proxy.Enhancer; /** * 測試Cglib */ public class CglibDynamicProxyDemo { public static void main(String[] args) { Enhancer enhancer = new Enhancer(); //被代理類:Cat enhancer.setSuperclass(Cat.class); //設置回調 enhancer.setCallback(new CatMethodInterceptor()); //生成代理對象 Cat cat = (Cat) enhancer.create(); //調用代理類的方法 cat.cry(); } }
四、運行結果代理
——————調用前處理—————— 喵喵喵 ——————調用後處理——————