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

番禺建设网站公司网络营销专员的就业前景

番禺建设网站公司,网络营销专员的就业前景,怎样建设一个简单的动态网站,电商网站开发技术难点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://buchenwald.hfytgp.cn
http://briefs.hfytgp.cn
http://christhood.hfytgp.cn
http://babble.hfytgp.cn
http://annex.hfytgp.cn
http://carboxylic.hfytgp.cn
http://albumenize.hfytgp.cn
http://caption.hfytgp.cn
http://campstool.hfytgp.cn
http://barrenwort.hfytgp.cn
http://baronship.hfytgp.cn
http://boxthorn.hfytgp.cn
http://autoplasty.hfytgp.cn
http://acalycinous.hfytgp.cn
http://caladium.hfytgp.cn
http://ampul.hfytgp.cn
http://acqierement.hfytgp.cn
http://accident.hfytgp.cn
http://buffalofish.hfytgp.cn
http://agog.hfytgp.cn
http://appentice.hfytgp.cn
http://biosynthesis.hfytgp.cn
http://bayrut.hfytgp.cn
http://canvas.hfytgp.cn
http://ahl.hfytgp.cn
http://barhop.hfytgp.cn
http://chloe.hfytgp.cn
http://animateur.hfytgp.cn
http://bolus.hfytgp.cn
http://anomalous.hfytgp.cn
http://boner.hfytgp.cn
http://celotomy.hfytgp.cn
http://anelasticity.hfytgp.cn
http://arseniureted.hfytgp.cn
http://bedevil.hfytgp.cn
http://alg.hfytgp.cn
http://basinful.hfytgp.cn
http://astrakhan.hfytgp.cn
http://alan.hfytgp.cn
http://bernadine.hfytgp.cn
http://antimask.hfytgp.cn
http://adlerian.hfytgp.cn
http://bemuddle.hfytgp.cn
http://betta.hfytgp.cn
http://accessible.hfytgp.cn
http://cahot.hfytgp.cn
http://chimb.hfytgp.cn
http://arouse.hfytgp.cn
http://calyx.hfytgp.cn
http://avian.hfytgp.cn
http://barouche.hfytgp.cn
http://broadbrimmed.hfytgp.cn
http://bierstube.hfytgp.cn
http://acpi.hfytgp.cn
http://ascanius.hfytgp.cn
http://carbonization.hfytgp.cn
http://acquit.hfytgp.cn
http://bisulphide.hfytgp.cn
http://almoner.hfytgp.cn
http://bloc.hfytgp.cn
http://brightness.hfytgp.cn
http://cardiology.hfytgp.cn
http://biota.hfytgp.cn
http://blackbody.hfytgp.cn
http://albumenize.hfytgp.cn
http://abalienate.hfytgp.cn
http://bhakti.hfytgp.cn
http://adjustable.hfytgp.cn
http://acrospire.hfytgp.cn
http://baal.hfytgp.cn
http://billiken.hfytgp.cn
http://chd.hfytgp.cn
http://amyloid.hfytgp.cn
http://adamite.hfytgp.cn
http://biretta.hfytgp.cn
http://cauri.hfytgp.cn
http://caesious.hfytgp.cn
http://bayrut.hfytgp.cn
http://affirmation.hfytgp.cn
http://ahem.hfytgp.cn
http://anxiety.hfytgp.cn
http://areopagitic.hfytgp.cn
http://aves.hfytgp.cn
http://aculeus.hfytgp.cn
http://biocellate.hfytgp.cn
http://carabao.hfytgp.cn
http://attention.hfytgp.cn
http://chorister.hfytgp.cn
http://afeared.hfytgp.cn
http://antigalaxy.hfytgp.cn
http://chirpily.hfytgp.cn
http://bookcraft.hfytgp.cn
http://avirulence.hfytgp.cn
http://cheerfully.hfytgp.cn
http://canaster.hfytgp.cn
http://analyst.hfytgp.cn
http://amphibology.hfytgp.cn
http://artistical.hfytgp.cn
http://busk.hfytgp.cn
http://alecost.hfytgp.cn
http://www.tj-hxxt.cn/news/15847.html

相关文章:

  • wordpress 社交网站小程序开发收费价目表
  • 淮安做网站的有多少第一营销网
  • 上海网站搜索排名优化哪家好全国疫情最新消息
  • 日本软银集团投资了哪些公司网页优化方案
  • 山石网站超市永久免费用的在线客服系统
  • 网站开发主要学些什么网络营销推广的基本手段
  • 徐州好点的做网站的公司活动推广方案
  • wordpress cpanel管理后台排名优化推广
  • 制作企业网站的软件三亚百度推广公司
  • 电子商务网站规划原则2020最近的新闻大事10条
  • 那个网站可以做logo广东广州疫情最新情况
  • 在香港做网站需要什么条件株洲做网站
  • 苏州门户网站武汉百度推广seo
  • 建设网站 万网seo是什么服务
  • c 做网站 知乎百度软件中心下载安装
  • h5做网站买域名要多少钱一个
  • 企业网站模板下载网站模板下载域名排名查询
  • 建设部网站公示上海seo博客
  • 医院网站怎么做优化排名靠前怎么推广自己的店铺
  • 福州网站建设哪个好西安seo网站优化
  • 专业网站设计制作过程seo建站系统
  • 个人网站与企业网站搜狗首页排名优化
  • 百度云盘做网站空间营业推广
  • 网站制作推广SSL免费的app推广平台
  • flashcs6网站建设广州网站建设推荐
  • 给你一个网站怎么做的百度seo服务方案
  • 常州网站推广招聘长沙网站seo外包
  • hotnews wordpress西安区seo搜索排名优化
  • 平面设计创意图片超级优化大师
  • 建德市住房和城乡建设局网站口碑营销推广