没有梦想,何必远方

cglib的动态代理

package com.jy.util;


import net.sf.cglib.proxy.Enhancer;
import net.sf.cglib.proxy.MethodInterceptor;
import net.sf.cglib.proxy.MethodProxy;
import org.apache.poi.ss.formula.functions.T;

import java.lang.reflect.Method;

public class MyCglibProxyDemo  implements MethodInterceptor{

    /*
    <dependency>
            <groupId>cglib</groupId>
            <artifactId>cglib</artifactId>
            <version>3.2.5</version>
        </dependency>
     */
    private T target;
    public T getInstance(T target){
        this.target = target;
        Enhancer enhancer = new Enhancer();
     //指定被代理的作为父类 enhancer.setSuperclass(target.getClass()); enhancer.setCallback(
this); return (T)enhancer.create(); } @Override public Object intercept(Object obj, Method method, Object[] objects, MethodProxy methodProxy) throws Throwable { //前置处理 Object invoke = methodProxy.invoke(obj, objects); //后置处理 return invoke; } }

 

posted @ 2019-03-08 18:50  北极丶光  阅读(193)  评论(0编辑  收藏  举报