• 课时9::基于Schema形式的AOP实现


    .1)基于Schema形式的AOP实现

      1.导入相应jar包 前置通知示例已经有了 这里就不做过多的讲解

      2.编写通知类该类不需要继承或者写任何注解

    package net.bdqn.hbz.aop;
    
    import org.aspectj.lang.JoinPoint;
    import org.aspectj.lang.ProceedingJoinPoint;
    
    /**
     * 通知类
     */
    public class LogSchema {
    
        /**
         * 前置通知
         */
        public void before(){
            System.out.println("基于Schema进行了前置通知");
        }
    
        /**
         * 后置通知
         * @param jp 目标信息
         * @param returnValue 返回值
         */
        public void after(JoinPoint jp,Object returnValue){
            System.out.println("基于Schema进行了前置通知");
        }
    
        public void execution(Throwable throwable){
            System.out.println("基于Schema异常通知:"+throwable.getMessage());
        }
    
        /**
         * 环绕通知
         */
        public void huanrao(ProceedingJoinPoint point){
            System.out.println("基于Schema执行了环绕前置通知");
            try{
                point.proceed();
                System.out.println("基于Schema执行环绕后置通知");
                System.out.println("环绕基于Schema目标方法名称:"+point.getSignature().getName());
            }catch (Throwable throwable){
                System.out.println("基于Schema执行了环绕异常通知");
            }finally {
                System.out.println("基于Schema执行了环绕最终通知");
            }
        }
    }

      3.编写配置

    <!--    注入通知类-->
        <bean id="logSchema" class="net.bdqn.hbz.aop.LogSchema"/>
    <!--    建立关联-->
        <aop:config>
    <!--        目标信息-->
            <aop:pointcut id="tra" expression="execution(public void addStudent(net.bdqn.hbz.pojo.Student))"/>
    <!--        建立连接-->
            <aop:aspect ref="logSchema">
    <!--            将目标对象添加前置通知-->
                <aop:before method="before" pointcut-ref="tra"></aop:before>
     <!--            将目标对象添加后置通知-->
                <aop:after-returning returning="returnValue" method="after" pointcut-ref="tra"></aop:after-returning>
    <!--          将目标对象添加异常通知  -->
                <aop:after-throwing method="execution" throwing="throwable" pointcut-ref="tra"></aop:after-throwing>
    <!--            将目标对象添加环绕-->
                <aop:around method="huanrao" pointcut-ref="tra"></aop:around>
            </aop:aspect>
        </aop:config>

        3.1 ref="logSchema"代表的是通知bean的id值

        3.2 method=“值” 代表的是通知类的方法

        3.3 pointcut-ref=“值” 代表目标信息

        3.4 returning=“值” 返回值 throwing=“值” 捕获的异常范围

     

  • 相关阅读:
    妙味——字符串方法2
    妙味——字符串方法
    [LeetCode][JavaScript]Shortest Palindrome
    [LeetCode]Kth Largest Element in an Array
    [LeetCode][JavaScript]Word Ladder
    [LeetCode][SQL]Second Highest Salary
    [LeetCode][JavaScript]Clone Graph
    [LeetCode][JavaScript]Merge k Sorted Lists
    [LeetCode][JavaScript]Merge Two Sorted Lists
    [LeetCode][JavaScript]Valid Sudoku
  • 原文地址:https://www.cnblogs.com/thisHBZ/p/12511984.html
Copyright © 2020-2023  润新知