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

wordpress建2个网站吗青岛工程建设管理信息网站下载

wordpress建2个网站吗,青岛工程建设管理信息网站下载,做网站用什么ps软件,成成品网站源码有限公司理解动态代理 动态代理的核心在于代理对象的创建和方法调用是在运行时动态发生的,而不是在编译时就已经确定的性能监控、事务管理、日志记录通常需要使用代理对象对目标对象的功能进行增强为什么JDK动态代理只能代理有接口的类? 因为Proxy.newProxyIns…

理解动态代理

  1. 动态代理的核心在于代理对象的创建和方法调用是在运行时动态发生的,而不是在编译时就已经确定的
  2. 性能监控、事务管理、日志记录通常需要使用代理对象对目标对象的功能进行增强
  3. 为什么JDK动态代理只能代理有接口的类?
  • 因为Proxy.newProxyInstance方法需要传入被动态代理的接口类target.getClass().getInterfaces(),之所以要传入接口而不能传入类,因为JDK动态代理会在运行时生成一个代理类,叫做$Proxy0,这个代理类会继承java.lang.reflect.Proxy这个类,同时还会去实现被代理类的接口,在Java里面是不支持多继承的,而每一个动态代理类都继承了一个Proxy,所以就导致了JDK动态代理只能代理接口,而不能代理实现类
  • 其实也可以进行实现类的代理,但是代理接口的设计更符合业务场景,因为实际的开发中都是面向接口来开发的,所以基于接口来实现动态代理更符合业务场景

JDK动态代理

public interface Service {void doSomething();
}public class ServiceImpl implements Service {@Overridepublic void doSomething() {System.out.println("Doing something");}
}import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
import java.lang.reflect.Proxy;/*** JDK动态代理示例*/
public class MyInvocationHandler implements InvocationHandler {// target在构造之后不会发生改变private final Object target;public MyInvocationHandler(Object target) {this.target = target;}public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {System.out.println("前置处理");Object object = method.invoke(target, args);System.out.println("后置处理");return object;}// 调用此方法,会返回一个实现了目标对象所有接口的代理对象,这个代理对象会使用当前类作为InvocationHandlerpublic Object getProxy() {// 类加载器、接口数组、InvocationHandlerreturn Proxy.newProxyInstance(Thread.currentThread().getContextClassLoader(), target.getClass().getInterfaces(), this);}}public static void main(String[] args) {// 创建真实的服务对象Service realService = new ServiceImpl();// 创建 MyInvocationHandler 的实例,并传入真实的服务对象MyInvocationHandler handler = new MyInvocationHandler(realService);// 使用 MyInvocationHandler 创建代理对象Service proxy = (Service) handler.getProxy();// 调用代理对象的方法proxy.doSomething();}

CGlib动态代理

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

import net.sf.cglib.proxy.Enhancer;
import net.sf.cglib.proxy.MethodInterceptor;
import net.sf.cglib.proxy.MethodProxy;
import java.lang.reflect.Method;/*** 适用于没有实现任何接口的类* 需要引入cglib代码库* cglib增强器,负责拦截方法调用,并添加额外逻辑*/
public class CGlibProxy implements MethodInterceptor {public Object createProxy(Object target) {Enhancer enhancer = new Enhancer();enhancer.setSuperclass(target.getClass());enhancer.setCallback(this);return enhancer.create(); // 动态创建代理对象}@Overridepublic Object intercept(Object obj, Method method, Object[] args, MethodProxy proxy) throws Throwable {System.out.println("前置处理");Object result = proxy.invokeSuper(obj, args); // 动态调用方法System.out.println("后置处理");return result;}
}public static void main(String[] args) {ServiceImpl service = new ServiceImpl();CGlibProxy proxy = new CGlibProxy();ServiceImpl proxyService = (ServiceImpl) proxy.createProxy(service);proxyService.doSomething();}
http://www.yayakq.cn/news/478835/

相关文章:

  • 湖州网络公司网站建设广州模板网站建设
  • 企业网站seo排名公司网站制作门槛
  • 自己搭建服务器 发布网站 域名如何申请老太太做受网站
  • 创建网站平台要多少钱专业合肥网站建设
  • 做系统用哪个网站好东莞网上推广教程
  • 中山医疗网站建设全球设计网优秀版式作品
  • 手机制作表白网站绍兴网站制作方案
  • 买个域名自己做网站公司网站建设 做账
  • 青岛学网站建设的大学国都建设集团网站
  • 冷门行业做网站的优势wordpress 更多内容
  • 一起来做网站17网上在线购物系统
  • h5网站的好处wordpress采集vip视频
  • 前端网站开发心得体会宁夏建设职业技术学院成绩查询网站
  • 宿迁网站建设哪家专业区块链做网站都有哪些内容呢
  • 网站备案起名要求校园网站建设划分vlan
  • 大连网站搜索排名提升福建省龙岩市建设培训中心网站
  • 建设一个网站要多少费用网站建设模板购买
  • 旅游公司网站模板小程序电商平台排名
  • 科技教育司海南seo排名
  • 网站建设与管理 pdf正规网站建设建设公司
  • 广告设计公司招聘哈尔滨seo优化运营
  • 重庆王网站制作网站购物车功能怎么做
  • 丽江市网站建设制作网站制作 技术
  • 讲究 网站杭州p2p网站建设
  • 个人网站建设背景和目的射洪县住房和城乡建设局网站
  • 现在还有做静态网站的什么网站都能进的浏览器
  • 网站服务器开发网站页面做
  • 山东济南网站建设优化广东新闻联播林红
  • 建设学风建设专题网站wordpress仿站函数
  • 如何给网站做2维码广告推广语