package com.zhao.sina.design.patterns.cglib.proxy;
public class HeadTeacher {
public HeadTeacher() {
super();
}
public String teaching() {
System.out.println("老师培育祖国的花朵!");
return null;
}
public void life() {
// TODO Auto-generated method stub
System.out.println("教育教学让我很快乐!");
}
}
package com.zhao.sina.design.patterns.cglib.proxy;
import java.lang.reflect.Method;
import net.sf.cglib.proxy.Enhancer;
import net.sf.cglib.proxy.MethodInterceptor;
import net.sf.cglib.proxy.MethodProxy;
/**
* Cglib动态代理,实现MethodInterceptor接口
*
*/
public class CglibProxy implements MethodInterceptor {
private Object target;
@Override
public Object intercept(Object obj, Method method, Object[] arr, MethodProxy proxy) throws Throwable {
System.out.println("Cglib动态代理,监听开始!");
Object invoke = method.invoke(target, arr);
System.out.println("Cglib动态代理,监听结束!");
return invoke;
}
public Object getCglibProxy(Object object) {
this.target = object;
Enhancer enhancer = new Enhancer();
enhancer.setSuperclass(object.getClass());
enhancer.setCallback(this);
Object result = enhancer.create();
return result;
}
}
package com.zhao.sina.design.patterns.cglib.proxy;
public class Cglibtest {
public static void main(String[] args) {
CglibProxy proxy = new CglibProxy();
HeadTeacher teacher = (HeadTeacher) proxy.getCglibProxy(new HeadTeacher());
teacher.teaching();
teacher.life();
}
}