当前位置: 首页 > news >正文

自己做烘焙的网站网盟推广与信息流

自己做烘焙的网站,网盟推广与信息流,wordpress首页显示栏目分类,网站开发服务合同属于什么合同一,动态代理 我发现Spring框架中的动态代理是一种非常强大的机制,它可以在运行时为接口或类创建动态代理,然后通过这些代理在方法调用前后添加额外的行为。在后续Spring的AOP(面向切面编程)支持中扮演了关键角色。 二…

一,动态代理

       我发现Spring框架中的动态代理是一种非常强大的机制,它可以在运行时为接口或类创建动态代理,然后通过这些代理在方法调用前后添加额外的行为。在后续Spring的AOP(面向切面编程)支持中扮演了关键角色。

二,应用目的

     Spring动态代理主要用于以下目的:

  1. 事务管理:在方法执行前后自动开始和提交事务。
  2. 安全性:在方法执行前进行权限检查。
  3. 性能监控:在方法执行前后添加日志来监测性能

三,核心组件

  • Proxy:代理是动态创建的类,它在目标类的基础上增加了额外的处理逻辑。当通过代理对象调用方法时,代理会先调用与之相关的拦截器链。
  • InvocationHandler(JDK动态代理):这是实际的拦截逻辑所在,定义了在调用目标方法前后应当执行的操作。每个代理实例都有一个关联的调用处理程序。 当在代理实例上调用方法时,方法调用将被编码并分派到其调用处理程序的invoke方法。(接口中仅有Invoke方法)
  • invoke:处理代理实例上的方法调用并返回结果。 当在与之关联的代理实例上调用方法时,将在调用处理程序中调用此方法。

四, invoke(object proxy, method,Object[] args)方法参数

  1. proxy ---- 调用该方法的代理实例
  2. method----所述方法对应于调用代理实例上的接口方法的实例。 方法对象的声明类将是该方法声明的接口,它可以是代理类继承该方法的代理接口的超级接口。
  3. args-----包含的方法调用传递代理实例的参数值的对象的阵列,或null如果接口方法没有参数。

五,例(案例参考租房需求代理)

1.创建动态代理

// 租赁公司用这个类,自动生成代理类!
public class ProxyInvocationHandler implements InvocationHandler {// 被代理的接口private Rent rent;public void setRent(Rent rent) {this.rent = rent;}// 生成代理类public Object getProxy() {return Proxy.newProxyInstance(this.getClass().getClassLoader(), rent.getClass().getInterfaces(), this);}// 代理类要执行的,方法增强public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {// 调用代理对象,就是使用真实对象调用!Object result = method.invoke(rent, args);return result;}
}
这段代码定义了一个ProxyInvocationHandler类,实现了Java的InvocationHandler接口,用于创建一个动态代理。这个类中有几个关键部分:
  1. 私有成员变量rent:它是Rent接口的一个实现,代表被代理的对象。
  2. setRent 方法:用于设置代理的目标对象。
  3. getProxy 方法:利用Proxy.newProxyInstance方法生成代理对象。这个方法需要三个参数:类加载器,接口数组(代理类需要实现的接口),以及一个InvocationHandler实例(当前对象this)。
  4. invoke 方法:这是代理实例的方法调用时实际执行的代码。invoke方法可以在调用目标方法前后添加自定义逻辑,本例中只是简单地调用了目标对象的相应方法。

2.定义租房接口

//租房
public interface Rent {public void rent();
}

3.定义房东租房任务

//模拟房东出租房屋
public class Host implements Rent{public void rent(){system.out.println("房东要出租房屋")}
}

4.实现动态代理

package com.kuang.demo03;public class Client {public static void main(String[] args) {// 生成被代理对象Host host = new Host();// 代理角色:现在没有ProxyInvocationHandler pih = new ProxyInvocationHandler();// 通过调用程序处理角色来处理我们要调用的接口对象---也就是可以调用host里面的任务pih.setRent(host);Rent proxy = (Rent) pih.getProxy();proxy.rent();}
}
代码定义了一个客户端类Client,演示如何使用动态代理。这里的重点在于如何创建代理对象并通过它来调用方法:
  1. Host实例化:首先创建了一个Host对象,Host是Rent接口的实现类,代表租赁服务的具体实现。
  2. ProxyInvocationHandler实例化:接着创建一个ProxyInvocationHandler的实例。这个类是用来定义代理逻辑的处理器。
  3. 设置代理的目标对象:通过pih.setRent(host)将host对象设置为代理的目标对象。
  4. 获取代理对象:通过pih.getProxy();获取代理对象。这一步是通过代理处理器和Java的Proxy类动态生成一个符合Rent接口的代理对象。
  5. 通过代理对象调用方法:最后通过代理对象调用Rent()方法。如果ProxyInvocationHandler的invoke方法可以添加特定逻辑(如打印日志、权限校验等),它们会在这一步执行。
http://www.lakalapos1.cn/news/302/

相关文章:

  • 建设网站的一般步骤html在线编程网站
  • 个人网站 可以做淘宝客吗有什么网站做知识吗
  • 网站建设公司 壹起航政务网站建设浙江
  • 电商网站用什么做最好网站后期维护协议
  • 哈尔滨快速建站专业定制怎么样做游戏网站
  • 网站建设效益分析网站设计主页
  • 宿迁哪家做网站推广东西湖建设局网站
  • 天门建站网站尺寸自适应
  • 网站域名查询地址wordpress底部通知
  • 河北建设工程信息网辅助评标系统seo 网站优化推广排名教程
  • 做景观设施的网站附近的网站建设公司
  • 深圳网站制作公司讯建筑网站开发
  • 修邦建设网站深汕特别合作区小漠镇
  • 网站关键字让别人做超链接了怎么办深圳有名设计公司有哪些
  • 做网站能月入10万中南大学双一流建设网站
  • 合作客户北京网站建设自适应网站模板源码
  • 株洲品牌网站建设青岛网站有限公司
  • 微信公众平台微网站开发百度竞价推广有哪些
  • 中国贸易网是什么网站wordpress视频主题吾爱破解版
  • 学校网站要更新应怎么做乐陵市seo关键词优化
  • 个人做网站公司网站源码程序修改
  • 无锡网站设计哪家公司好免费设计网
  • wp如何做引擎网站比较好的做外贸网站
  • 徐州网站设计价位wordpress收款
  • 西部数码网站管理助手 3.0设计师论坛
  • 营销型网站建设申请域名时公司类型的域名后缀一般是网站建设培训手册
  • 重庆网站策划宝山区建设用地事务所网站
  • 有保障的无锡网站制作友情连接
  • 短网址网站如何用照片做模板下载网站
  • 江苏省执业建设注册中心网站文档怎么做网页