未实现任何接口的目标类:
/**
* 目标类:未实现任何接口
* @author WanAkiko
*
*/
public class SomeService {
public String doFirst() {
System.out.println("执行目标类的doFirst方法!");
return "WanAkiko";
}
public void doSecond() {
System.out.println("执行目标类的doSecond方法!");
}
}
代理工厂类:
import java.lang.reflect.Method;
import net.sf.cglib.proxy.Enhancer;
import net.sf.cglib.proxy.MethodInterceptor;
import net.sf.cglib.proxy.MethodProxy;
import service.SomeService;
/**
* CGLIB代理工厂
* 使用CGLIB为无接口的类创建动态代理,其实现原理是生成目标类(必须能够被继承,即非final修饰的类)的子类,被增强的子类即为代理对象
* @author WanAkiko
*
*/
public class CglibFactory implements MethodInterceptor {
private SomeService target;
public CglibFactory() {}
public CglibFactory(SomeService target) {
super();
this.target = target;
}
/**
* 创建动态代理
* @return 代理对象
*/
public SomeService myCglibCreator() {
Enhancer