创建代理类的方法:
//import org.springframework.cglib.proxy.Enhancer;
//import org.springframework.cglib.proxy.MethodInterceptor;
//import org.springframework.cglib.proxy.MethodProxy;
/**
* 创建代理类
*
* @param targetBean 源Bean
* @return 代理Bean
*/
private Object createProxyBean(final Object targetBean) {
Enhancer enhancer = new Enhancer();
enhancer.setSuperclass(targetBean.getClass());
enhancer.setUseCache(true);
enhancer.setInterceptDuringConstruction(false);
enhancer.setCallback((MethodInterceptor) (bean, method, args, methodProxy) -> {
System.err.println("代理前");
Object result = methodProxy.invokeSuper(bean, args);
System.err.println("代理后");
return result;
});
Object targetProxyBean = enhancer.create();
return targetProxyBean;
}
测试实践:
- 创建测试类:
public class Test{
public void say() {
System.err.println("Hello");
}
}
- 测试:
Test test = (Test) createProxyBean(new Test());
test.say();
- 输出结果
代理前
Hello
代理后