spring通知-BeforeAdvice和AfterReturningAdvice

    xiaoxiao2026-01-23  5

    通知(advice)是springAOP中重要的一个核心模块。 spring 通知分为方法调用之前方法 调用之后 或者任何区间。

    BeforeAdvice 1 前置通知是在目标方法调用之前执行。 2 通过实现MethodBeforeAdvice来植入前置通知 3 MethodBeforeAdvice接口的主要代码:

    ``` public interface MethodBeforeAdvice extends BeforeAdvice { void before(Method var1, Object[] var2, Object var3) throws Throwable; } ```

    4 前置通知的demo

    4.1 目标业务类 /** * 目标业务类 * Created by engle on 16-5-14. */ public class Target{ public void log() { System.out.println("日志信息"); } } 4.2 前置通知实现类 /** * 业务执行前的通知 * Created by engle on 16-5-14. */ public class BeforeMessage implements MethodBeforeAdvice{ @Override public void before(Method method, Object[] objects, Object o) throws Throwable { System.out.println("在日志之前通知"); } 4.3 测试类 /** * 测试类 * Created by engle on 16-5-14. */ public class Test { public static void main(String[] args) { Target target = new Target(); BeforeAdvice before = new BeforeMessage(); AfterMessage after = new AfterMessage(); ProxyFactory factory = new ProxyFactory(); //设置代理工厂 factory.setTarget(log); //添加执行目标信息 factory.addAdvice(before); //添加执行前通知 Target proxy = (Target) factory.getProxy(); //获取代理对象 proxy.log(); } } 4.4 输出结果 ![这里写图片描述](https://img-blog.csdn.net/20160514121410510)

    2 AfterReturningAdvice

    后置通知是在目标方法调用之后执行。 通过实现AfterReturningAdvice来植入后置通知 。AfterReturningAdvice接口的主要代码: public interface AfterReturningAdvice extends AfterAdvice { void afterReturning(Object var1, Method var2, Object[] var3, Object var4) throws Throwable; } 4.后置通知小demo(业务类和前置通知相同) 4.1 后置通知实现类 /** * 业务执行前的通知 * Created by engle on 16-5-14. */ public class BeforeMessage implements MethodBeforeAdvice{ @Override public void before(Method method, Object[] objects, Object o) throws Throwable { System.out.println("在日志之前通知"); } } 4.2测试类 public class Test { public static void main(String[] args) { Target target = new Target(); BeforeAdvice before = new BeforeMessage(); AfterMessage after = new AfterMessage(); ProxyFactory factory = new ProxyFactory(); //设置代理工厂 factory.setTarget(log); //添加执行目标信息 factory.addAdvice(after); //添加执行后的通知 Target proxy = (Target) factory.getProxy(); //获取代理对象 proxy.log(); } } 4.3结果: 日志信息 方法执行之后的通知

    如果有问题可以私信或者留言给我

    相关资源:七夕情人节表白HTML源码(两款)
    最新回复(0)