zoukankan      html  css  js  c++  java
  • 强大的【环绕通知】

    AOP (面向切面编程) :在程序运行时,动态的将代码块切入到某个类的某个方法的某个位置(前面、后面、发生异常时)上。

    前置通知:在某个方法之前执行   实现MethodBeforeAdvice接口

    后置通知:在某个方法之后执行   实现AfterReturningAdvice接口

    异常通知:在某个方法发生异常时执行    实现ThrowsAdvice接口

    环绕通知:可以在方法之前、之后、发生异常时执行!   实现MethodInterceptor接口

    最终通知:不论目标方法是否发生异常都会执行

    切点和切面:切点是:在目标方法之前这个点、目标方法之后这个点、在目标方法发生异常这个点

          切面是:在切点执行的代码块。

    环绕通知:

      可以获取目标方法的 完全控制权!(方法是否执行、控制参数、控制返回值)

      在使用环绕通知时,目标方法的一切信息,都可以通过invocation(invoke方法传进去的参数名称)参数获取到

    public class SurroundMethod implements MethodInterceptor{
    
        public Object invoke(MethodInvocation invocation) {
            Object result = null;
            try {
                System.out.println("环绕通知里面的【前置通知】。。。");
                result = invocation.proceed();  //这里相当于执行目标方法 如果不写目标方法就不会执行
                // result是目标方法的返回值
                System.out.println("环绕通知里面的【后置通知】...");
            } catch (Throwable e) {
                System.out.println("这里是执行环绕通知里面的【异常通知】。。。");
                e.printStackTrace();
            } finally{
                  System.out.println("这里是执行环绕通知里面的【最终通知】");
              }
            return result;
            //也可以返回其他  return “123”;  那么目标方法的返回值就是 "123"
        }
        
    }

    在applicationContext.xml文件中的配置  然后执行目标方法

    <bean></bean>  通知类要写进来
    
    <aop:config>
    <!-- 切点 -->
    <aop:pointcut expression="execution(【这里是目标方法的具体信息】public * com.service.AddStudent.addStudent())" id="addStudent1"/>
    <!-- 连线 切点和切面连接起来 -->
    <aop:advisor advice-ref="interceptMethod" pointcut-ref="addStudent1"/>
    </aop:config>
  • 相关阅读:
    2020软件工程作业04
    2020软件工程作业03
    2020软件工程作业02
    2020软件工程作业01
    Linux操作系统分析-课程学习总结报告
    结合中断上下文切换和进程上下文切换分析Linux内核的一般执行过程
    深入理解系统调用
    基于mykernel 2.0编写一个操作系统内核
    交互式多媒体图书平台的设计与实现
    码农放入自我修养之必备技能学习笔记
  • 原文地址:https://www.cnblogs.com/DDiamondd/p/10673649.html
Copyright © 2011-2022 走看看