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

dw做网站 后台用什么后台搭建公司

dw做网站 后台用什么后台,搭建公司,谷歌广告上海有限公司,网站建设课的感想文章目录 一、什么是JDK动态代理二、JDK动态代理的特点三、JDK动态代理类如何使用四、JDK动态代理原理分析1、创建代理对象2、生成代理类 一、什么是JDK动态代理 JDK动态代理是Java提供的一种动态生成代理类和代理对象的技术。它主要利用Java的反射机制实现#xff0c;在运行… 文章目录 一、什么是JDK动态代理二、JDK动态代理的特点三、JDK动态代理类如何使用四、JDK动态代理原理分析1、创建代理对象2、生成代理类 一、什么是JDK动态代理 JDK动态代理是Java提供的一种动态生成代理类和代理对象的技术。它主要利用Java的反射机制实现在运行时动态地创建代理类并为其生成代理对象。JDK动态代理主要用于实现AOP面向切面编程等场景用于在不修改目标类代码的情况下为目标类添加额外的功能。 二、JDK动态代理的特点 基于接口代理JDK动态代理只能为接口创建代理实例不能针对类创建代理实例。如果要为类创建代理可以考虑使用CGLIB等第三方库。运行时生成代理类JDK动态代理在运行时动态地创建代理类无需提前编译。代理类和代理对象JDK动态代理不仅生成代理类还生成代理对象。代理对象实现了目标接口并将目标对象作为参数传递给InvocationHandler。 三、JDK动态代理类如何使用 定义接口和目标类首先你需要定义一个接口和一个实现了该接口的目标类。 public interface MyInterface { void doSomething(); } public class MyTarget implements MyInterface { Override public void doSomething() { System.out.println(Target method executed.); } }创建InvocationHandler实现InvocationHandler接口并在invoke方法中编写代理逻辑。invoke方法会在调用代理对象的任何方法时被调用。 import java.lang.reflect.InvocationHandler; import java.lang.reflect.Method; public class MyInvocationHandler implements InvocationHandler { private Object target; public MyInvocationHandler(Object target) { this.target target; } Override public Object invoke(Object proxy, Method method, Object[] args) throws Throwable { System.out.println(Before method execution.); Object result method.invoke(target, args); System.out.println(After method execution.); return result; } }创建代理对象使用Proxy.newProxyInstance方法创建代理对象。这个方法需要三个参数类加载器、代理类实现的接口列表和InvocationHandler实例。 import java.lang.reflect.Proxy; public class Main { public static void main(String[] args) { MyInterface target new MyTarget(); MyInvocationHandler handler new MyInvocationHandler(target); MyInterface proxy (MyInterface) Proxy.newProxyInstance( target.getClass().getClassLoader(), target.getClass().getInterfaces(), handler ); proxy.doSomething(); // 执行代理对象的方法 } }执行上述代码你会看到在调用doSomething方法前后都输出了日志信息这就是通过JDK动态代理实现的AOP效果。 需要注意的是由于JDK动态代理基于接口因此如果你的目标类没有实现任何接口那么JDK动态代理将无法使用。在这种情况下你可以考虑使用CGLIB等第三方库来创建代理。 四、JDK动态代理原理分析 1、创建代理对象 对于匿名类方法中的实例会在改类型为其生成相应的变量 2、生成代理类 生成的代理对象继承了Proxy类并实现了UserService接口。 接口 public interface UserService {void test();void getOne();void getById(); }接口实现类 import person.xsc.source.read.service.UserService;public class UserServiceImpl implements UserService {Overridepublic void test() {System.out.println(hello world);}Overridepublic void getOne() {}Overridepublic void getById() {} }生成$proxy0类 import sun.misc.ProxyGenerator;import java.io.FileOutputStream; import java.io.IOException;public class ProxyDemo {public static void main(String[] args) {UserServiceImpl userService new UserServiceImpl();byte[] proxyClassFile ProxyGenerator.generateProxyClass($proxy0, userService.getClass().getInterfaces(), 1);FileOutputStream outputStream null;try {outputStream new FileOutputStream(D:\\myProject\\spring-yuanma-fenxi\\src\\test\\java\\proxy\\$proxy0.class);outputStream.write(proxyClassFile);outputStream.flush();} catch (Exception e) {e.printStackTrace();} finally {try {outputStream.close();} catch (IOException e) {e.printStackTrace();}}} }展示$proxy0类 // // Source code recreated from a .class file by IntelliJ IDEA // (powered by Fernflower decompiler) //import java.lang.reflect.InvocationHandler; import java.lang.reflect.Method; import java.lang.reflect.Proxy; import java.lang.reflect.UndeclaredThrowableException; import person.xsc.source.read.service.UserService;public class $proxy0 extends Proxy implements UserService {private static Method m1;private static Method m3;private static Method m4;private static Method m2;private static Method m5;private static Method m0;public $proxy0(InvocationHandler var1) throws {super(var1);}public final boolean equals(Object var1) throws {try {return (Boolean)super.h.invoke(this, m1, new Object[]{var1});} catch (RuntimeException | Error var3) {throw var3;} catch (Throwable var4) {throw new UndeclaredThrowableException(var4);}}public final void test() throws {try {super.h.invoke(this, m3, (Object[])null);} catch (RuntimeException | Error var2) {throw var2;} catch (Throwable var3) {throw new UndeclaredThrowableException(var3);}}public final void getById() throws {try {super.h.invoke(this, m4, (Object[])null);} catch (RuntimeException | Error var2) {throw var2;} catch (Throwable var3) {throw new UndeclaredThrowableException(var3);}}public final String toString() throws {try {return (String)super.h.invoke(this, m2, (Object[])null);} catch (RuntimeException | Error var2) {throw var2;} catch (Throwable var3) {throw new UndeclaredThrowableException(var3);}}public final void getOne() throws {try {super.h.invoke(this, m5, (Object[])null);} catch (RuntimeException | Error var2) {throw var2;} catch (Throwable var3) {throw new UndeclaredThrowableException(var3);}}public final int hashCode() throws {try {return (Integer)super.h.invoke(this, m0, (Object[])null);} catch (RuntimeException | Error var2) {throw var2;} catch (Throwable var3) {throw new UndeclaredThrowableException(var3);}}static {try {m1 Class.forName(java.lang.Object).getMethod(equals, Class.forName(java.lang.Object));m3 Class.forName(person.xsc.source.read.service.UserService).getMethod(test);m4 Class.forName(person.xsc.source.read.service.UserService).getMethod(getById);m2 Class.forName(java.lang.Object).getMethod(toString);m5 Class.forName(person.xsc.source.read.service.UserService).getMethod(getOne);m0 Class.forName(java.lang.Object).getMethod(hashCode);} catch (NoSuchMethodException var2) {throw new NoSuchMethodError(var2.getMessage());} catch (ClassNotFoundException var3) {throw new NoClassDefFoundError(var3.getMessage());}} }
http://www.zqtcl.cn/news/526620/

相关文章:

  • 用动态和静态设计一个网站cname wordpress
  • php装修门户网站源码PHP是做网站最好的
  • 莆田哪里有网站开发北京大企业公司排名
  • 网站建设运营的成本丰宁县有做网站的吗
  • 网站建设如何上传文件中小企业网站建设好么
  • 安徽建设部网站国际网站 建设
  • 沈阳开发网站小程序名称大全
  • 做网站大概价格西安做网站电话
  • 前端做微网站台州做网站哪家公司好
  • 电信改公网ip可以做网站吗销售平台建设方案
  • 免费的公司网站怎么做网站建设招聘需求
  • 徐州金桥建设监理有限公司网站那个网站做系统好
  • 浙江网站制作做一个自我介绍的网页
  • 郑州做网站公司有多少网站建设需要自备什么
  • 齐齐哈尔网站seo重庆旅游
  • 顺德品牌网站建设信息网络编程课程
  • 广西南宁建设职业学图书馆网站wordpress 黑色主题
  • 网站建设需要准备那些内容阜阳微商城网站建设
  • flash全屏网站模板企业网站示例
  • 制作手机端网站开发厦门网站设计定制
  • 佛山网站开发公司做网站在什么地方发帖子呢
  • 无网站可以做cpc吗wordpress 12张表
  • 有些中小网站cnzz网站排名是怎么做的
  • 深圳做微商网站的公司高端做网站价格
  • 在线原型设计网站wordpress菜单页内跳转
  • 做电影网站要买什么抖音推广怎么收费
  • 专业的公司网站开发网站按钮设计
  • 南宁网站建设是什么深圳公司有哪些
  • 杭州手机申请网站登录怎么做电子商务网站
  • 青岛个人接网站建设wordpress 转载文章