Spring Aop(十一)—— 编程式的创建Aop代理之ProxyFactory

本文介绍了如何使用Spring Aop的ProxyFactory编程式地创建Aop代理对象,详细讲解了指定被代理对象、Advisor、Advice以及是否发布代理对象的过程,并探讨了ProxyFactory在创建代理时的JDK和CGLIB选择策略。
摘要由CSDN通过智能技术生成

编程式的创建Aop代理之ProxyFactory

Spring Aop是基于代理的,ProxyFactory是Spring Aop内部用来创建Proxy对象的一个工厂类。如果我们需要在程序运行时来动态的应用Spring Aop,则我们可以考虑使用ProxyFactory。使用ProxyFactory时,我们需要为它指定我们需要代理的目标对象、代理时我们需要使用的Advisor或Advice。如下示例就是一个简单的使用ProxyFactory创建MyService对象的代理,同时对其应用了一个MethodBeforeAdvice,即每次调用代理对象的方法时都将先调用MethodBeforeAdvice的before方法。

    @Test
    public void testProxyFactory() {
        MyService myService = new MyService();
        ProxyFactory proxyFactory = new ProxyFactory(myService);
        proxyFactory.addAdvice(new MethodBeforeAdvice() {

            @Override
            public void before(Method method, Object[] args, Object target) throws Throwable {
                System.out.println("执行目标方法调用之前的逻辑");
                //不需要手动去调用目标方法,Spring内置逻辑里面会调用目标方法
            }

        });;
        MyService proxy = (MyService) proxyFactory.getProxy();
        proxy.add();
    }

指定被代理对象

ProxyFactory有多个重载的构造函数,上面示例中笔者用的是指定被代理对象的构造函数,如果我们应用的是其它构造函数,则可以通过ProxyFactory的setTarget(Object)方法来指定被代理对象。如果我们没有指定被代理对象的Class,那么默认创建出来的代理对象是我们传递的被代理对象的类型,即获取的是targetObject.getClass

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值