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

公司网站建设费入什么科目网站可以用视频做背景吗

公司网站建设费入什么科目,网站可以用视频做背景吗,wordpress终极优化,自己怎么设计公主房文章目录 一、JDK动态代理1、关键类和接口2、实现步骤 二、CGLIB动态代理1、关键类2、实现步骤 三、总结 Java中的动态代理是一种设计模式,它允许在运行时创建代理对象,而不是在编译时。代理对象可以用来代理真实对象的方法调用。 Java中的动态代理主要…

文章目录

  • 一、JDK动态代理
    • 1、关键类和接口
    • 2、实现步骤
  • 二、CGLIB动态代理
    • 1、关键类
    • 2、实现步骤
  • 三、总结

Java中的动态代理是一种设计模式,它允许在运行时创建代理对象,而不是在编译时。代理对象可以用来代理真实对象的方法调用。

Java中的动态代理主要有两种实现方式:JDK动态代理CGLIB动态代理

一、JDK动态代理

JDK动态代理使用Java标准库中的java.lang.reflect包来创建代理对象。它适用于实现了接口的类,通过接口类型来代理对象。

1、关键类和接口

  • InvocationHandler接口:
    这是一个接口,必须实现其invoke方法,代理对象的所有方法调用都会转发到这个方法。
  • Proxy类:
    这是一个用来创建代理对象的类,提供了静态方法newProxyInstance来生成代理对象。

2、实现步骤

1)定义接口和实现类:

public interface MyService {void perform();
}public class MyServiceImpl implements MyService {@Overridepublic void perform() {System.out.println("Executing perform method");}
}

2)实现InvocationHandler接口,编写代理逻辑

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;}@Overridepublic Object invoke(Object proxy, Method method, Object[] args) throws Throwable {System.out.println("Before method invoke");Object result = method.invoke(target, args);System.out.println("After method invoke");return result;}
}

3)使用Proxy.newProxyInstance方法创建代理对象

import java.lang.reflect.Proxy;public class Main {public static void main(String[] args) {MyService myService = new MyServiceImpl();MyInvocationHandler handler = new MyInvocationHandler(myService);MyService proxyInstance = (MyService) Proxy.newProxyInstance(myService.getClass().getClassLoader(),myService.getClass().getInterfaces(),handler);proxyInstance.perform();}
}

二、CGLIB动态代理

CGLIB(Code Generation Library)是一种强大的字节码生成库,它允许在运行时创建子类,适用于没有实现接口的类。CGLIB通过继承被代理类来创建代理对象,因此无法代理final类。

1、关键类

  • Enhancer类:
    这是CGLIB用来生成代理类的主要类,通过设置超类和回调来创建代理对象。
  • MethodInterceptor接口:
    这是一个接口,类似于InvocationHandler,需要实现intercept方法。

2、实现步骤

1)添加CGLIB依赖:

在项目中添加CGLIB库的依赖。对于Maven项目:

<dependency><groupId>cglib</groupId><artifactId>cglib</artifactId><version>3.3.0</version>
</dependency>

2)定义实现类:定义一个没有实现接口的类

public class MyService {public void perform() {System.out.println("Executing perform method");}
}

3)实现MethodInterceptor,编写代理逻辑。

import net.sf.cglib.proxy.MethodInterceptor;
import net.sf.cglib.proxy.MethodProxy;
import java.lang.reflect.Method;public class MyMethodInterceptor implements MethodInterceptor {@Overridepublic Object intercept(Object obj, Method method, Object[] args, MethodProxy proxy) throws Throwable {System.out.println("Before method invoke");Object result = proxy.invokeSuper(obj, args);System.out.println("After method invoke");return result;}
}

4)使用Enhancer类创建代理对象。

import net.sf.cglib.proxy.Enhancer;public class Main {public static void main(String[] args) {Enhancer enhancer = new Enhancer();enhancer.setSuperclass(MyService.class);enhancer.setCallback(new MyMethodInterceptor());MyService proxyInstance = (MyService) enhancer.create();proxyInstance.perform();}
}

三、总结

  • JDK动态代理:适用于实现了接口的类,通过InvocationHandler处理代理逻辑。
  • CGLIB动态代理:适用于没有实现接口的类,通过继承实现代理,使用MethodInterceptor处理代理逻辑。性能更优。

动态代理在AOP(面向切面编程)、拦截器、权限控制、事务管理等领域有广泛应用,提供了灵活的方式来在运行时增强对象行为。

http://www.yayakq.cn/news/248281/

相关文章:

  • 平谷建站推广购物软件有哪些
  • 建站优化推广网站开发费用如何记账
  • 微型营销网站制作用媒体做响应式网站可以吗
  • 五华网站建设 优帮云建筑工程网招聘信息
  • 网站搭建策略与方法有哪些方面太原不错的互联网公司
  • 门源县电子商务网站建设公司常熟建设设银行网站
  • 如何写网站文案辽宁省住房和城乡建设厅网站首页
  • 廊坊网站制作套餐多少钱翻译
  • 免费空间域名可以做淘宝客网站推广吗IT男为女朋友做的求婚网站
  • 网站服务提供商如何理解网络营销环境
  • 创新的盐城网站建设wordpress 文章搜集
  • 南岗红旗大街网站建设郑州做品牌网站的公司
  • 网站开发流程视频外包员工强制辞退找谁赔偿
  • 网站设计宽屏尺寸公司建设网站价格
  • 做响应式网站设计师需要做什么橙色的网站模板
  • 阿里网站建设App开发做冷冻食品的网站
  • 网站如何做微信支付宝支付宝支付宝接口紧急访问升级狼人通知
  • 我需要做网站物业管理系统app
  • 那个网站可以做双色球号码对比的wordpress 文章排序插件
  • 北京公司网站建设价格网站建设公司需要哪些
  • 淮安企业网站广西seo
  • 怎么做网站竞价企业咨询管理服务
  • wordpress 网站标题嵌入式开发要学什么
  • 广州网站推广建设行业门户网站模板
  • 没有营业执照可以建设网站网站空间格式asp
  • 如何查看网站是否被百度收录在浏览器播放视频
  • 网站关键词怎么优化排名网站建设名牌
  • 江苏泰兴网站建设如何开网店无货源不需要投资
  • 正规网站建设价格网站建设公司的方案
  • 关于网站备案及管理的授权书什么是网络营销名词解释