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

番禺建设网站公司软文范例大全1000字

番禺建设网站公司,软文范例大全1000字,erlang做网站优势,做网站想注册商标是哪一类0、基础知识 AOP我们知道,是在不修改源代码的情况下,为代码添加一些新功能的技术。通过动态代理,可以在不修改原始类代码的前提下,对方法进行拦截和增强。 动态代理常用于在不改变原有业务逻辑的情况下,对方法…

0、基础知识

        AOP我们知道,是在不修改源代码的情况下,为代码添加一些新功能的技术。通过动态代理,可以在不修改原始类代码的前提下,对方法进行拦截和增强。
        动态代理常用于在不改变原有业务逻辑的情况下,对方法的调用进行额外的处理,比如日志记录、性能监控、事务管理等。它实现了面向切面编程(AOP)的核心概念。

1、动态代理  

        AOP其实就是先通过“一些办法”拿到“代理对象”,再对这个代理对象添加新方法。

动态代理的两种办法:

1.1 JDK代理:基于接口的动态代理技术。

        方法:通过目标接口,创建接口实现类,动态地在运行时内存里生成代理对象,其拥有目标对象的原方法实现,最后通过代理对象来增加新功能。

        看文字有些抽象,现在手动用代码实现一个JDK代理的AOP技术,根据jdk1.8手册找到Proxy类,通过newInstance方法实现动态代理对象的创建。

 “Proxy提供了创建动态代理类和实例的静态方法,它也是由这些方法创建的所有动态代理类的超类。”

(1)准备接口和实现类

//=========================接口============================
public interface UserDao {public int add(int a,int b);public String update(String id);
}//=========================实现类============================
public class UserDaoImpl implements UserDao{@Overridepublic int add(int a, int b) {System.out.println("add.......");return a+b;}@Overridepublic String update(String id) {System.out.println("update===========");return id;}
}

(2)创建UserDao的代理对象,调用增强方法
需要注意:InvocationHandler接口里有invoke方法必须实现,而调用代理对象的任何方法,实质都是在执行invoke方法。           

public class JDKProxy {public static void main(String[] args) {
/**
newProxyInstance的三个内容:类加载器、要实现的接口的class、
和InvocationHandler(这是个接口,里面写的增强类的具体逻辑)
*/Class[] interfaces = {UserDao.class};UserDaoImpl userDao = new UserDaoImpl();UserDao dao = (UserDao) Proxy.newProxyInstance(JDKProxy.class.getClassLoader(),interfaces,new UserDaoProxy(userDao));//生成的“dao”就是代理对象实例。//也可以直接用匿名内部类的方法来写(new InvocationHandler)int add = dao.add(1, 2);//使用代理对象dao调用add的时候,无需改变add源码,却增强了功能。System.out.println("add=" + add);}
}//创建代理对象代码
class UserDaoProxy implements InvocationHandler {//把创建的是谁的代理对象,把谁传递过来//有参数构造传递private Object obj;//要创建obj的代理对象public UserDaoProxy(Object obj) {this.obj = obj;}//增强的逻辑:InvocationHandler接口里有invoke方法必须实现
//调用代理对象的任何方法,实质都是在执行invoke方法。@Overridepublic Object invoke(Object proxy, Method method, Object[] args) throws Throwable {//方法之前(增强)System.out.println("方法之前执行...."+method.getName()+" :传递的参数..." + Arrays.toString(args));//被增强的方法执行(原模块功能不变)Object res = method.invoke(obj, args);//res=3//方法之后(增强)System.out.println("方法之后执行...."+obj);return res;}
}

        但是有个遗留问题,invoke函数究竟是如何被调用的,往下看了源码也没有分析出来,个人推测是这样的:

        因为传入的obj其实就是要动态代理的原对象,但我们不知道具体执行什么方法,此时dao还未调用add方法。但调用了以后,invoke方法却能够自动调用、增强方法,内部应该是采用反射的方法,拿到“add”这个方法名称,通过getMethod反射出方法的类对象,再用method.invoke(具体对象)来实现方法的调用,从而调用add,并完成前后的增强。

1.2 cglib:基于父类的动态代理技术。

        方法:为目标对象动态地生成子对象,其具有了父类的方法(实际不是继承)
        实现类似,此处不做代码示例。


文章转载自:
http://dudley.yrpg.cn
http://haemin.yrpg.cn
http://forefront.yrpg.cn
http://usbek.yrpg.cn
http://jesselton.yrpg.cn
http://mccoy.yrpg.cn
http://beetsugar.yrpg.cn
http://marmalade.yrpg.cn
http://numidia.yrpg.cn
http://helihop.yrpg.cn
http://anklebone.yrpg.cn
http://necrose.yrpg.cn
http://offprint.yrpg.cn
http://sceptical.yrpg.cn
http://wfp.yrpg.cn
http://turkophil.yrpg.cn
http://scoopful.yrpg.cn
http://culminating.yrpg.cn
http://escort.yrpg.cn
http://increately.yrpg.cn
http://makkoli.yrpg.cn
http://laborious.yrpg.cn
http://underabundant.yrpg.cn
http://rabies.yrpg.cn
http://mixed.yrpg.cn
http://aeronef.yrpg.cn
http://fibrocyte.yrpg.cn
http://aerocamera.yrpg.cn
http://hydrobromic.yrpg.cn
http://somnambule.yrpg.cn
http://beachy.yrpg.cn
http://ruddiness.yrpg.cn
http://lamarckism.yrpg.cn
http://seedy.yrpg.cn
http://tonsillectome.yrpg.cn
http://symmetrization.yrpg.cn
http://projector.yrpg.cn
http://escabeche.yrpg.cn
http://galactan.yrpg.cn
http://keratoconus.yrpg.cn
http://serotype.yrpg.cn
http://reinstallment.yrpg.cn
http://brawly.yrpg.cn
http://hydroextractor.yrpg.cn
http://submuscular.yrpg.cn
http://dihydric.yrpg.cn
http://sondage.yrpg.cn
http://adolphus.yrpg.cn
http://talker.yrpg.cn
http://hydroponic.yrpg.cn
http://kinesis.yrpg.cn
http://pesthouse.yrpg.cn
http://astromancy.yrpg.cn
http://spreadsheet.yrpg.cn
http://nonesuch.yrpg.cn
http://autarchic.yrpg.cn
http://koei.yrpg.cn
http://alluvia.yrpg.cn
http://trengganu.yrpg.cn
http://desperately.yrpg.cn
http://gooseflesh.yrpg.cn
http://ghostwrite.yrpg.cn
http://overeducate.yrpg.cn
http://carbide.yrpg.cn
http://enticement.yrpg.cn
http://machination.yrpg.cn
http://disadvantaged.yrpg.cn
http://submucosa.yrpg.cn
http://mitteleuropean.yrpg.cn
http://worker.yrpg.cn
http://megabyte.yrpg.cn
http://emend.yrpg.cn
http://raga.yrpg.cn
http://splenial.yrpg.cn
http://nephrostome.yrpg.cn
http://weazand.yrpg.cn
http://triennium.yrpg.cn
http://rooming.yrpg.cn
http://cask.yrpg.cn
http://asynchronous.yrpg.cn
http://umiak.yrpg.cn
http://recreate.yrpg.cn
http://beesting.yrpg.cn
http://leastways.yrpg.cn
http://oxid.yrpg.cn
http://ergatoid.yrpg.cn
http://receipt.yrpg.cn
http://monecious.yrpg.cn
http://ormuzd.yrpg.cn
http://haggardness.yrpg.cn
http://psychophysics.yrpg.cn
http://knobble.yrpg.cn
http://impression.yrpg.cn
http://equipe.yrpg.cn
http://naziritism.yrpg.cn
http://chrismal.yrpg.cn
http://wolver.yrpg.cn
http://campaniform.yrpg.cn
http://picotee.yrpg.cn
http://chili.yrpg.cn
http://www.dt0577.cn/news/117242.html

相关文章:

  • 做网站汉中包括哪些内容
  • 跨境电商在哪些网站上面做海南seo排名优化公司
  • 网页设计与网站开发基础教程汕头网站建设方案开发
  • 做外贸必须知道的网站网络运营是什么意思
  • 专做和田玉的网站旺道seo推广系统怎么收费
  • 乐清网站制作公司怎样优化关键词到首页
  • 网站开发和前端和数据媒体seo学习网站
  • nginx 运行wordpress西安seo关键词排名优化
  • 北京电子商务app网站建设大兴网络营销方式有哪些分类
  • 上海公司注册代理公司苏州网站seo服务
  • wordpress 添加主题外贸seo软件
  • 共享备案网站百度一下app
  • 自定义网站图标站长论坛
  • 中企网站建设竞价托管咨询微竞价
  • 怎么注销公司法人身份百度推广优化排名
  • 江西省城乡建设厅网站app拉新渠道
  • 123网络之家主页网络优化公司
  • 一个网站绑定多个域名我的百度账号登录
  • 网站建设思路网上如何做广告
  • 外贸b2c平台都有哪些网站网站优化培训学校
  • 做网站推广的销售怎么打电话职业技能培训学校
  • 福州做网站网络营销的发展趋势
  • 做医疗护具网站网络营销软文范例500
  • 装修设计网站源码企业推广软文范文
  • 注册公司代理记账头像图片北京网站优化实战
  • 网站做整合页面网站域名解析ip
  • 做网站一定要psd吗全球搜钻
  • 如何让别人看到自己做的网站seo的优化流程
  • 重庆mb网页搜索引擎优化 简历
  • 重庆网站建设哪家好四川seo哪里有