zoukankan      html  css  js  c++  java
  • Spring-aop

    特点  是对oop的补充,解决代码混乱和代码分散的问题,通过动态代理实现AOP

    概念  切面  实现AOP功能的类

        通知  切面类中实现切面功能的方法

        连接点  程序执行的特定位置

        切点  连接点的定义

        目标  被通知的对象

        代理  向目标应用通知而产生的对象

    用法  要通过接口创建目标的代理

        配置AOP  注解  基于AspectJ

                  容器配置  启用扫描器

                        启用AspectJ注解支持  <aop:aspectj-autoproxy></aop:aspectj-autoproxy>

                        定义切面类  @Component  容器管理

                               @Aspect  切面类

                               定义通知  参数JoinPoint  代表连接点的数据

                                             getSignature().getName()  方法名

                                             getArgs()  返回Object[]  参数列表  

                                     通知类型  @Before  前置通知(在方法执行前执行)

                                           @After  后置通知(在方法执行后执行,不论是否发生异常)

                                           @AfterReturuning  返回通知(returning=返回值的参数名)(必须有对应参数)

                                           @AfterThrowing  异常通知 throwing=“接收异常对象的参数”

                                           @Around  环绕通知(可实现其他通知,可控制目标方法的调用)

                                                   要求必须有ProceedingJoinPoint类型的参数

                                                   必须明确调用ProceedingJoinPoint的proceed()方法

                                                 (通过代理调用目标方法,并接受返回值)

                                                   必须有返回值(返回执行目标方法的结果)

                                                 适当位置添加通知代码

                                                   前置  调用proceed()前

                                                   后置  在调用proceed()后的finally里

                                                   返回  在调用proceed()并接收返回值后

                                                   异常  在proceed()返回异常时

                          切点表达式  @通知类型注解(pointcut=“execution(修饰符 返回值类型 包名.类名.方法名(参数类型))”)

                                 *可以代表任意修饰符、返回值类型、包名、类名、方法名

                                 ..可以代表任意个数的参数类型

                          切点表达式重用  在空的java类上添加@Pointcut(切点表达式)注解

                                   在通知的注解里使用“方法名()”代替切点表达式

                                   在其他切面类通知的注解里使用“类名.方法名()”代替切点表达式

              XML  把切面类已bean的形式加入容器(注解方式优先级高于XML方式)

                  <aop:config>  <aop:aspect ref="切面类bean的id">  定义切面类

                            <aop:before method="方法名" pointcut="切点"></aop:before>   定义通知,前置

                           <aop:after method="方法名" pointcut-ref="公共切点id"></aop:after>   后置通知

                           <aop:after-returning method="方法名" returning="参数名" pointcut-ref="公共切点id"/>  返回通知

                           <aop:after-throwing method="方法名" throwing="参数名" pointcut-ref="公共切点id"/>  异常通知 

                           <aop:around method="方法名" pointcut-ref="公共切点id"/>  环绕通知 

                           <aop:pointcut id="" expression="切点"/>  定义公共切点

  • 相关阅读:
    一卦,测一年运气
    测一下我心中想的事
    一卦,测一下我心里想的事
    这一卦,学到了不少东西
    癸山丁向下卦(七运)
    起卦测我心里想的事
    现在的卦,越来越看不懂了
    luogu P2759 奇怪的函数 |二分答案
    luogu P2515 [HAOI2010]软件安装 |Tarjan+树上背包
    luogu P2343 宝石管理系统 |分块+堆
  • 原文地址:https://www.cnblogs.com/jingfengling/p/6164957.html
Copyright © 2011-2022 走看看