Spring的点点滴滴之动态代理
发布日期:2021-06-29 01:16:36 浏览次数:2 分类:技术文章

本文共 1795 字,大约阅读时间需要 5 分钟。

动态代理的一些代码的举例

public class ProxyInvocationHandler implements InvocationHandler{
private Object target; public void setTarget(Object target) { this.target = target; } public Object getProxy() { return Proxy.newProxyInstance(this.getClass().getClassLoader(), target.getClass().getInterfaces(), this); } @Override public Object invoke(Object proxy, Method method, Object[] args) throws Throwable { // TODO Auto-generated method stub logs(method.getName()); Object result=method.invoke(target, args); return result; } public void seeMouse() { System.out.println("看房子"); } public void jiaoqian() { System.out.println("交钱"); } public void logs(String messageName) { System.out.println("调用"+messageName); }}
public class Client {    public static void main(String[] args) {        /*userService userService=new userServiceImpl();        ProxyInvocationHandler pih=new ProxyInvocationHandler();        pih.setTarget(userService);        userService proxy=(com.yonyou.service.userService) pih.getProxy();        proxy.add();*/        ProxyInvocationHandler pih=new ProxyInvocationHandler();        pih.setTarget(new ArrayList());        List proxy= (List) pih.getProxy();        proxy.add("sd");    }}

这里要实现动态代理首先要实现InvocationHandler这个借口才行。

之后则会里有一个方法`public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
// TODO Auto-generated method stub
logs(method.getName());
Object result=method.invoke(target, args);

return result;}`这个方法用于实现真是角色的方法。在这个类中还要创建一个proxy代理对象
public Object getProxy()    {        return Proxy.newProxyInstance(this.getClass().getClassLoader(), target.getClass().getInterfaces(), this);    }

这个就是target的代理实例。

当在调用代理实例的方法时,就会自动调用Invoke方法。

转载地址:https://blog.csdn.net/ys3198/article/details/53392386 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:Spring的点点滴滴之aop
下一篇:Spring点点滴滴之静态代理

发表评论

最新留言

路过,博主的博客真漂亮。。
[***.116.15.85]2024年04月18日 17时48分35秒