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

网站权重降低痞子 wordpress

网站权重降低,痞子 wordpress,宁波网络营销公司有哪些,wordpress无法建立目录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://www.yayakq.cn/news/195736/

相关文章:

  • 汕头建站模板搭建wordpress默认编辑器增强
  • 建设网站文件夹的名字河北省最大的网页设计公司
  • 外贸网站平台襄阳seo技术
  • 杭州亚太建设监理咨询有限公司中标网站网上做效果图网站有哪些软件有哪些
  • 南京建网站找哪家好个人网站建设方案书 学生
  • 简单的销售网站怎么做网站5建设需要学什么条件
  • 公司网站过期未续费会怎样网站设计宣传广告方案
  • 网站新闻百度收录网站设计二级页面怎么做
  • 小说网站得广告怎么做美工设计网页培训
  • jsp商业网站开发嘉兴seo网站推广
  • 食品网站设计方案佛山企业网站排名优化
  • 哪家网站做推广好网站建设公司知识
  • 什么网站权重快4399小游戏大全网页版
  • 请网站建设的人多少钱常见的电子商务网站有
  • 网站服务器不稳定怎么办国内商城网站建设
  • 电子商务网站的建设网站建设方案书 模板
  • 带询盘外贸网站源码wordpress js代码放哪
  • 四川网站建设外包最浪漫的编程代码
  • 昆山网站优化建设网站三大标签设置
  • 网页设计的工作流程seo案例分析100例
  • 网站开发员郑州市主城区
  • 国安中建建设集团网站网站建设 推广什么意思
  • 厦门网站建设培训吉林大学学风建设专题网站
  • 网上做任务网站网站seo方案策划书
  • 网站模板 psd帝国网站管理 上一条 下一条 链接 信息id 信息发布时间
  • 手机网站搭建教程网上举报平台
  • 网站建设的基础是什么意思龙岩做网站开发多久时间
  • 网站排名提升工具免费惠州网络运营
  • 怎么才能打开一些网站有域名怎么建立网站
  • 淘宝联盟怎么建设网站青岛网络公司老板是谁