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(); } }
四、运行结果代理
——————调用前处理—————— 喵喵喵 ——————调用后处理——————