您的位置:首页 > 职场人生

黑马程序员 java高新技术之代理和AOP原理

2013-08-05 21:04 555 查看

---------------------------------------------------------------- android培训、java培训、期待与您交流! -----------------------------------------------------------代理AOP(Aspect oriented program)面向方面的编程

代理是为已实现的类增加日志,事务,系统信息等。

代码位置:

1,目标方法前

2,目标方法后

3,目标方法前后都有

4,catch中

利用动态类生成Collection对象

Class classProxy1=Proxy.getProxyClass(Collection.class.getClassLoader(), Collection.class);

System.out.println(classProxy1.getName());

System.out.println("--------new Instance-----------");

  Constructor conMethod=classProxy1.getConstructor(InvocationHandler.class);

  Collection collection=(Collection)conMethod.newInstance(new InvocationHandler()

  {

   

   @Override

   public Object invoke(Object proxy, Method method, Object[] args)

     throws Throwable {

    // TODO Auto-generated method stub

    return null;

   }

  });

  System.out.println(collection);

  //System.out.println(collection.isEmpty());

  collection.clear();

//方法二

  System.out.println("--------new Instance scheme2-----------");

  Collection collection2=(Collection)Proxy.newProxyInstance(

    Collection.class.getClassLoader(),

    new Class[]{Collection.class},

    new InvocationHandler()

    {

     ArrayList al=new ArrayList();

     @Override

     public Object invoke(Object proxy, Method method, Object[] args)

       throws Throwable {

      long beginTime=System.currentTimeMillis();

      Object obj=method.invoke(al, args);

      long endTime=System.currentTimeMillis();

      System.out.println(method.getName()+": running time----"+(endTime-beginTime));

      return obj;

     }

    });

  collection2.add("aaa");

  collection2.add("bbb");

  collection2.add("ccc");

  System.out.println(collection2.size());

  for(Object col: collection2)

  {

   System.out.println(col);

  }

代理原理:

客服端调用代理程序,代理调用InvocationHandler接口,而InvocationHandler调用目标程序。

aop框架编写原理:

由BeanFactory创建Bean对象,在创建时使用配置文件,根据配置文件决定返回的是那种类型的实例对象。

配置文件规范:(#表示注释)

xxx=java.util.ArrayList 

#xxx=cn.itcast.day02.aopframework.ProxyFactoryBean

xxx.advice=cn.itcast.day02.MyAdvice

xxx.target=java.util.ArrayList

此配置文件返回的是ArrayList对象,.advice为getProxy的一个参数,表示加在已编写好的程序广告对象

.target为getProxy的参数用于决定返回的什么类型的对象。

 

---------------------------------------------------------------- android培训、java培训、期待与您交流! ----------------------------------------------------------------------------------------
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: