zoukankan      html  css  js  c++  java
  • JavaSpring【七、AspectJ】

    AspectJ 概念

    • @AspectJ类似纯Java注解的普通Java类
    • Spring可以使用AspectJ来作为切入点
    • AOP在运行时仍是纯SpringAOP,对AspectJ无依赖

    配置:

    • 对@AspectJ可以使用XML方式配置或Java注解风格配置
    • 确保使用AspectJ1.6.8以上版本的AspectJweaver.jar

    xml风格:
    aop:aspectj-autoproxy

    注解风格:
    @Configuration
    @EnableAspectJAutoProxy

    AspectJ注解

    • @Aspect-切面实现类(不能被自动检测,需要配合@Component一起使用)
      Aspect 标注的类会从代理中排除,否则会造成死循环
    • @Pointcut-切入点方法声明
      切入点方式类型

      切入点只能声明在返回类型为void的空方法上(原则是简单、单一)
      可以包含参数,如@Pointcut("myPointcut() && args(a,b..)")
      组合Pointcut 可以通过&& || ! 将声明好的切入点方法名进行组合
      好的切入点应包含一下几个方面
    • 选定特定类型:execution、get、set、call、handler
    • 确定范围:within、whthincode
    • 匹配上下文信息:this、target、@annotation

    Advice-通知

    @Before("myPointcut() && args(a,b..)")//此处args为可选项,即为Before注解的方法的入参
    @Before("myPointcut(a,b..)")//与上面一种方式等价

    @AfterReturning("pointcut路径")//这里的路径可以是完整的包名,也可以是已经声明好的pointcut方法名,如myPointcut()
    @AfterReturning(pointcut="myPointcut()",returning="retVal")//这里的返回值,可以用于注解的方法的入参

    @AfterThrowing(pointcut="myPointcut()",throwing="ex")//这里的抛出,可以用于注解的方法的入参

    @After("myPointcut()")

    @Around("myPointcut()")//注解方法需要有一个入参ProceedingJoinPoint,调用pjp.proceed()来执行切入点方法

    使用注解引入参数
    1、定义一个注解
    2、在切入点方法上使用注解,并声明注解的值
    3、在通知方法上使用 && @Annotation(注解名) 声明使用注解作为入参,并将通知方法的入参定义为该注解,即可以在通知方法中使用注解的.value()方法获取切入点方法的注解值

    argNames属性可以指定注解的参数名称,若第一个参数是JoinPoint、ProceedingJoinPoint、JoinPoint.StaticPart,可以忽略

    • Introduction-引入
      @DeclareParents(value="匹配",defaultImpl=xxx.class)-用以声明Introduction

    Perthis-Aspect注解的子句实现

    @Aspect("perthis()")--每个独立的service执行时都创建一个切面实例,在service对象的每个方法第一次执行时创建实例,在service对象失效时同时失效

  • 相关阅读:
    .net解决跨域问题
    win7系统安装不了Visual Studio及sql server相关问题整理
    Visual Studio注释代码段快捷键
    实现文件下载,将后台返回的字节流转成下载链接
    表单中输入内容,搜索时,下面table中该列中包含关键字的高亮显示
    实现select联动效果,数据从后台获取
    vue的v-model指令
    SSM框架中,controller的action返回参数给vue.js
    vue路由实现多视图的单页应用
    关于vue的增删改查操作
  • 原文地址:https://www.cnblogs.com/shanelau/p/6831382.html
Copyright © 2011-2022 走看看