1.要代理的类实现了接口
例:
public class FindZJLProxy{
public static Singable findZJLProxy(ZJL zjl){
return (Singable)Proxy.newProxyInstance(zjl.getClass().getClass().getClassLoader(),zjl.getClass().getInterfaces(),new InvocationHandler(){
public Object invoke(Object proxy,Method method,Object[] args){
sysout("sing");
return method.invoke(zjl,args);
}
})
}
}
2.要代理的类未实现接口
例:
public class MyCglibUtil{
public staitic UserDao getProxy(){
Enhancer eh=new Enhancer();
eh.setSuperclass(UserDaoImpl.class);
eh.setCallback(new MethodInterceptor()
{
public Object interceptor(Object obj,Method method,Object[] args,MethodProxy mp){
if("save".equals(method.getName())){
sysout("log");
}
return mp.invokeSuper(obj,args);
}
});
UserDaoImpl ud=(UserDaoImpl)eh.create();
return ud;
}
}
网友评论