DynamicProxy--springAop 入门篇

springAop 面向切面编程,重要的是切点,多个点结合起来就是面,所以是切面,我个人是怎么理解的,有点受高中数学的影响,我们接下来说说一下三点

        1.前置增强

        2.后置增强

        3.环绕增强

  1. 前置增强

    是什么呢?就是我们之前的before() 方法

  2. 后置增强

    同理就是,after()

   3.环绕增强

        不就是前后一套都来,不就是环绕增强了吗?对,是的,我们还是来看代码吧

//接口

public interface Hello {
    public void say(String name);
}
//实现类
public class HelloImpl implements Hello {
    public void say(String name) {
        System.out.println(name);
    }
}
//这个类 实现的before()就是springAop的前置增强,自然afterReturning就是后置增强咯,哈哈哈
public class SuperAdvice implements AfterReturningAdvice,MethodBeforeAdvice{
    public void afterReturning(Object o, Method method, Object[] objects, Object o1) throws Throwable {
        System.out.println("之后");
    }
    public void before(Method method, Object[] objects, Object o) throws Throwable {
        System.out.println("之前");
    }
}

//测试

@Test
    public void a(){
        ProxyFactory proxyFactory = new ProxyFactory();
        proxyFactory.setTarget(new HelloImpl());
        proxyFactory.addAdvice(new SuperAdvice());
        Hello hello = (Hello) proxyFactory.getProxy();
        hello.say("张三");
    }

console:

    之前

    张三

    之后

 

那么怎么实现环绕增强呢? 看代码

public class AroundAdvice implements MethodInterceptor{
    public Object invoke(MethodInvocation methodInvocation) throws Throwable {
        System.out.println("之前");
        Object result = methodInvocation.proceed();
        System.out.println("之后");
        return result;
    }
}
MethodInterceptor并不是spring的接口,而是Aop联盟提出的强大接口,调用方式一样

 

public class TestA {
    @Test
    public void a(){
        ProxyFactory proxyFactory = new ProxyFactory();
        proxyFactory.setTarget(new HelloImpl());
        proxyFactory.addAdvice(new AroundAdvice());
        Hello hello = (Hello) proxyFactory.getProxy();
        hello.say("张三");
    }
}

结果同上

console:

    之前

    张三

    之后

 

下次继续说!

转载于:https://my.oschina.net/u/3394890/blog/1525830

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值