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

那种转转假网站怎么做的/长沙电商优化

那种转转假网站怎么做的,长沙电商优化,郑州做网站哪家比较好,做直播导航网站好JDK动态代理 Jdk动态代理是装饰模式的一个典型用例,关于装饰模式这里不多解释,直接说重点吧.jdk动态代理实际上就是代替继承方案,在不破坏原始类的原则下,在运行期间为某个类动态注入一些新的方法。java.lang.reflect.Proxy提供了…

                         JDK动态代理

  Jdk动态代理是装饰模式的一个典型用例,关于装饰模式这里不多解释,直接说重点吧.jdk动态代理实际上就是代替继承方案,在不破坏原始类的原则下,在运行期间为某个类动态注入一些新的方法。java.lang.reflect.Proxy提供了生成代理类的接口。进入源代码,我们可以看见关于Proxy的详细说明这里截取一些关键的部分:

 

/*** {@code Proxy} provides static methods for creating dynamic proxy* classes and instances, and it is also the superclass of all* dynamic proxy classes created by those methods.*(Proxy提供了提供了一系列生成动态代理类或实例静态的方法,它是所有动态代理类的超类)*    目标类:就是你要代理的对象*    代理类:代理目标类执行动作的类** <p>To create a proxy for some interface {@code Foo}:*(给目标类添加一些方法(接口)生成代理类的方法:)* <pre>*    //获取自定义处理类对象*     InvocationHandler handler = new MyInvocationHandler(...);*    //获取代理类字节码对象*     Class&lt;?&gt; proxyClass = Proxy.getProxyClass(Foo.class.getClassLoader(), Foo.class);*    //生成代理类对象实例*     Foo f = (Foo) proxyClass.getConstructor(InvocationHandler.class).*                     newInstance(handler);* </pre>* or more simply:(也可以用如下更简单的方式:)* <pre>*    //这里使用了匿名内部类的方式,直接将处理逻辑推迟到用户具体定义使用的时候,具有极大的灵活性*    *    //Foo.class.getClassLoader()获取类加载器,以便将代理类注册到内存,实际上这里是指虚拟机*      //new Class<?>[] { Foo.class } 获取目标类所有的方法(接口)*    //handler 自定义的处理逻辑,也就是说你拿到方法后要干什么* Foo f = (Foo) Proxy.newProxyInstance(Foo.class.getClassLoader(),*                                          new Class&lt;?&gt;[] { Foo.class },*                                          handler);* </pre>
View Code

 

 

 

 

官方已经详细介绍了这个接口的使用方法,同时也对其中的原理做了阐述,这里就直接上实例来说说具体用法吧,jdk动态代理的实现原理 这种鬼东西至少也要在你会用的基础上再研究吧,等你会用了,自

己直接看源码去,以你的智商那还不是小ks。

 

  • 目标类接口设计 
  • package com.heima_aop;public interface UserService {public void addUser();public void updateUser();public void deleteUser();
    }
    View Code
  • 目标类接口实现
  • package com.heima_aop;public class UserServiceImpl implements UserService {@Overridepublic void addUser() {System.out.println("addUser");}@Overridepublic void updateUser() {System.out.println("updateUser");}@Overridepublic void deleteUser() {System.out.println("deleteUser");}}
    View Code
  • 代理类设计
  • package com.heima_aop;import java.lang.reflect.InvocationHandler;
    import java.lang.reflect.InvocationTargetException;
    import java.lang.reflect.Proxy;public class ProxyFactoryBean {public static UserService createUserService() throws InstantiationException, IllegalAccessException, IllegalArgumentException, InvocationTargetException, NoSuchMethodException, SecurityException {// 目标类final UserService service = new UserServiceImpl();// 切面类final MyAspect aspect = new MyAspect();//处理类MyInvocationHandler handler = new MyInvocationHandler(service);/*** 生成代理对象字节码*/Class<?> proxyClass = Proxy.getProxyClass(ProxyFactoryBean.class.getClassLoader(), new Class[]{UserService.class});/*** 使用反射调用代理类对象的构造函数,通过InvocationHandler接口进行规范,InvocationHandler的接口实现类对象告知其具体处理方式*/UserService proxy = (UserService) proxyClass.getConstructor(InvocationHandler.class).newInstance(handler);/** 方法二:* UserService proxy = (UserService) Proxy.newProxyInstance(ProxyFactoryBean.class.getClassLoader(),new Class[] { UserService.class },new MyInvocationHandler(service));方法三:(使用匿名内部类,官方推荐)    UserService proxy =(UserService) Proxy.newProxyInstance(ProxyFactoryBean.class.getClassLoader(),new Class[] { UserService.class },InvocationHandler() {@Overridepublic Object invoke(Object proxy, Method method,Object[] args) throws Throwable {aspect.Before();Object obj = method.invoke(service, args);aspect.After();return obj;}});            */return proxy;}
    }
    View Code
  • 测试
  • package com.heima_aop;import org.junit.Test;
    import org.springframework.context.ApplicationContext;
    import org.springframework.context.support.ClassPathXmlApplicationContext;public class Testdemo {@Testpublic void test_jdk(){String xmlpath = "com/heima_aop/bean.xml";ApplicationContext applicationContext = new ClassPathXmlApplicationContext(xmlpath);UserService service = (UserService) applicationContext.getBean("Userservice");service.addUser();service.deleteUser();/*System.out.println(service);*/} 
    }
    View Code

     

 

 

 

 

 

 

转载于:https://www.cnblogs.com/ggr0305/p/6534203.html

http://www.jmfq.cn/news/4798585.html

相关文章:

  • h5手机网站模板下载/百度平台app下载
  • 新疆网站开发报价/广东短视频seo营销
  • 翻译国外网站做原创/推广计划怎么做
  • 温州做网站建设多少钱/品牌营销策略有哪些方法
  • 天津做网站企业/软文营销经典案例200字
  • 黄村做网站哪家快/推广怎么推
  • 做软装有什么网站找图片/淘宝新店怎么快速做起来
  • 南昌seo推广外包/系统优化方法
  • 江门公司建站模板/全网营销是什么
  • 国旗做网站按钮违法吗/专业的营销团队哪里找
  • 有哪些是外国人做的网站吗/西安百度竞价代运营
  • 区块链交易网站开发/找客户资源的软件
  • 软件开发平台 devcloud/免费网站seo
  • 仁寿建设局网站/农村电商平台
  • 公司网站的个人主页怎么做/武汉java培训机构排名榜
  • 怎么自己做网站空间/惠州网站制作推广
  • 广州最新封闭封控区域/网站产品怎么优化
  • 贵州网站制作品牌公司/全国各城市感染高峰进度查询
  • 小程序就是做网站/百度指数1000搜索量有多少
  • 可以做热图的工具网站/seo平台代理
  • 智能网站优化 cms 加盟/全球搜是什么公司
  • 网站策划 ppt/深圳市企业网站seo营销工具
  • 烟台做网站哪家好/小红书软文案例
  • 哪些网站可以做图片链接/文章推广平台
  • 中国中国建设银行网站首页/企业培训课程名称大全
  • 沈阳网站建设公司/企业网站建设案例
  • 呼伦贝尔网站建设平台/技能培训班
  • 上海网站建设收费/设计本网站
  • wordpress采集工具/seo页面内容优化
  • 如何k掉别人的网站/网站建设开发价格