java基础篇6之代理

代理的概念与应用

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

    Constructor[] Constructors = clazzProxy.getConstructors()



    动态生成类的内部代码
    Class Proxy{
        add(Object object){
            return handler.invoke(Object proxy,Method method,Object[] args);
        }
    }

Client 程序调用objProxy.add("abc")方法时
涉及三要素:objProxy对象,add方法,"abc"参数

     Collection proxy2 =(Collection)Proxy.newProxyInstance(
        Collection.class.getClassLoader(),
        new Class[]{Collection.class},
        new InvokeHandler(){
            ArrayList target = new ArrayList();
            public Object invoke(Object proxy,Method method,Object[] args){
                long beginTime;
                Object retVal = method.invoke(target,args);
                return retVal;
            }
    });

    proxy2.add("zxx");

方法中的内部类访问局部变量必须要加final

实现AOP功能的封装与配置
  工厂类BeanFactory负责创建目标类或代理类的实例对象,
  并通过配置文件实现切换。其getBean方法根据参数字符串返回一个相应的实例
  对象,如果参数字符串在配置文件中对应的类名不是ProxyFactoryBean,
  则直接返回该类的实例对象,否则,返回该类实例对象的getProxy方法返回的对象

BeanFactory的构造方法接收代表配置文件的输入流对象,配置文件格式如下
#xxx=java.util.ArrayList
xxx=cn.itcast.ProxyFactoryBean
xxx.target=java.util.ArrayList
xxx.advice=cn.itcast.MyAdvice

ProxyFactoryBean充当封装生成动态代理的工厂,需要为工厂创建
target和Advice

 

 

 

 

转载于:https://www.cnblogs.com/atomicbomb/p/6624410.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值