spring通知-BeforeAdvice和AfterReturningAdvice

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介: 通知(advice)是springAOP中重要的一个核心模块。 spring 通知分为方法调用之前方法 调用之后 或者任何区间。BeforeAdvice 1 前置通知是在目标方法调用之前执行。 2 通过实现MethodBeforeAdvice来植入前置通知 3 MethodBeforeAdvice接口的主要代码: ``` public in

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

  1. 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 输出结果
    ![这里写图片描述](http://img.blog.csdn.net/20160514121410510)
    

2 AfterReturningAdvice

  1. 后置通知是在目标方法调用之后执行。
  2. 通过实现AfterReturningAdvice来植入后置通知 。
  3. 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结果:
日志信息
方法执行之后的通知

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

相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
目录
相关文章
|
Java 测试技术 Maven
Spring——AOP中5大通知注解的理解与使用
Spring——AOP中5大通知注解的理解与使用
Spring——AOP中5大通知注解的理解与使用
|
XML 设计模式 安全
Spring AOP:原理、 通知、连接点、切点、切面、表达式
Spring AOP:原理、 通知、连接点、切点、切面、表达式
942 0
Spring AOP:原理、 通知、连接点、切点、切面、表达式
|
XML 监控 Java
Spring之AOP的切点、通知、切点表达式以及知识要点
Spring之AOP的切点、通知、切点表达式以及知识要点
192 0
Spring之AOP的切点、通知、切点表达式以及知识要点
|
XML 安全 Java
Spring AOP通知(Advice)详解
Spring 的 AOP 功能中一个关键概念是通知(Advice),与切点(Pointcut)表达式相关联在特定节点织入一些逻辑,Spring 提供了五种类型的通知。
1907 0
Spring AOP通知(Advice)详解
|
Java Spring
Spring Cloud Admin健康检查 邮件、钉钉群通知(2)
Spring Cloud Admin健康检查 邮件、钉钉群通知
157 0
Spring Cloud Admin健康检查 邮件、钉钉群通知(2)
|
监控 Java 机器人
Spring Cloud Admin健康检查 邮件、钉钉群通知(1)
Spring Cloud Admin健康检查 邮件、钉钉群通知
265 0
Spring Cloud Admin健康检查 邮件、钉钉群通知(1)
|
XML Java 数据格式
Spring AOP的配置 将通知织入目标对象
Spring AOP的配置 将通知织入目标对象
118 0
Spring AOP的配置 将通知织入目标对象
|
XML Java 编译器
动力节点-Spring使用AspectJ实现AOP前置通知
AspectJ 是一个面向切面的框架,它扩展了 Java 语言。AspectJ 定义了 AOP 语法,它有一个专门的编译器用来生成遵守 Java 字节编码规范的 Class 文件。
200 0
动力节点-Spring使用AspectJ实现AOP前置通知
下一篇
开通oss服务