如果目标对象未实现接口的情况下 /lib/cglib/cglib-nodep-2.1_3.jar package cn.itcase.aop; import java.lang.reflect.Method; import cn.itcase.service.impl.PersonSerciceBean; import net.sf.cglib.proxy.Enhancer; import net.sf.cglib.proxy.MethodInterceptor; import net.sf.cglib.proxy.MethodProxy; public class CGlibProProxyFactory implements MethodInterceptor{ private Object tartgetObject; public Object createProxyIntance(Object targetObject){ this.tartgetObject=targetObject; Enhancer enhancer = new Enhancer(); enhancer.setSuperclass(this.tartgetObject.getClass());//非final的方法进行覆盖 enhancer.setCallback(this); return enhancer.create(); } public Object intercept(Object proxy, Method method, Object[] args, MethodProxy methodProxy) throws Throwable { PersonSerciceBean bean = (PersonSerciceBean) this.tartgetObject; Object result = null; if (bean.getUser() != null) { method.invoke(tartgetObject, args); } return result; } } 测试类: package cn.itcase; import org.junit.BeforeClass; import org.junit.Test; import cn.itcase.aop.CGlibProProxyFactory; import cn.itcase.aop.JDKPROxyFactory; import cn.itcase.service.PersonService; import cn.itcase.service.impl.PersonSerciceBean; public class AOPTest { @BeforeClass public static void setUpBeforeClass() throws Exception { } @Test public void proxyTest(){ CGlibProProxyFactory factory=new CGlibProProxyFactory(); PersonService service = (PersonService)factory.createProxyIntance(new PersonSerciceBean("XXX")); // (PersonService)factory.createProxyIntance(new PersonSerciceBean("xxx")); service.save(""); } }