JDK 动态代理和 cglib 动态代理
JDK 动态代理为什么必须针对接口?其与 CGLIB 的对比
示例代码:
public interface AopService {
public void doService();
}
public class AopServiceImpl implements AopService {
private String singal;
public String getSingal() {
return singal;
}
public AopServiceImpl(){}
public AopServiceImpl(Stringsingal){
this.singal = singal;
}
@Override
public void doService() {
System.out.println("doservice method is being invoked now!!!");
}
}
public class ProxyFactory implements InvocationHandler {
private Object targetObject;
public ObjectcreateTargetObject(Object targetObject){
this.targetObject =targetObject;
returnProxy.newProxyInstance(this.targetObject.getClass()
.getClassLoader(),
this.targetObject.getClass().getInterfaces(),this);
}
@Override
public Object invoke(Objectarg0, Method method, Object[] args)
throws Throwable{
AopServiceImpl aopservice =(AopServiceImpl)this.targetObject;
Object result = null;
if(aopservice.getSingal()!=null){
result= method.invoke(targetObject, args);
}
return result;
}
}
测试代码:
public class AopTests {
@Test
public void Tests(){
评论4