这是一个service类
public class SayHelloService {
public void sayHello(){
System.out.println("Hello");
}
}
这是一个代理类
import org.springframework.cglib.proxy.Enhancer;
import org.springframework.cglib.proxy.MethodInterceptor;
import org.springframework.cglib.proxy.MethodProxy;
import java.lang.reflect.Method;
public class SayHelloProxy implements MethodInterceptor {
private Object target;
public Object getInstance(Object target){
this.target = target;
Enhancer enhancer = new Enhancer();
enhancer.setSuperclass(target.getClass());
enhancer.setCallback(this);
return enhancer.create();
}
public Object intercept(Object o, Method method, Object[] objects, MethodProxy methodProxy) throws Throwable {
return methodProxy.invokeSuper(o, objects);
}
}
这是一个测试类
public class CglibProxyTest {
public static void main(String[] args) {
SayHelloService sayHelloService = new SayHelloService();
SayHelloProxy sayHelloProxy = new SayHelloProxy();
SayHelloService sayHelloService1 = (SayHelloService) sayHelloProxy.getInstance(sayHelloService);
sayHelloService1.sayHello();
}
}
控制台打印如下
Hello