spring学习Day2

73 阅读2分钟

面向切面编程AOP

AOP(Aspect Roient Programming),面向切面编程

Aop常用术语

  • 切面:就是那些重复的,公共的,通用的功能称为切面,例如日志,事务,权限。
  • 连接点:就是目标方法,应为在目标风法中要实现目标方法的功能和切面功能
  • 切入点(PointCut):多个连接点构成切入点,切入点可以是一个目标方法,可以是一个类中的所有方法,可以是某个包下的所有类中的方法
  • 目标对象:擦送做谁,谁就是目标对象。
  • 通知(Advice):来指定切入的实际,实在目标方法执行前还是执行后还是出错时,还是环绕目标方法切入切面功能。

什么是AspectJ框架

AspectJ是一个优秀面向切面的框架,它扩展了Java语言,提供了强大的切面实现,易学易用。

AspectJ常见的通知类型

  1. 前置通知@Before
  2. 后置通知@AfterReturning
  3. 环绕通知@Around
  4. 最终通知@After
  5. 定义切入点@Pointcut(了解)

AspectJ切入点表达式(掌握)

规范的公式

execution(访问权限 方法返回值 方法声明(参数) 异常类型)
	简化后的公式(访问权限和异常声明可省)
execution(方法返回值 方法声明(参数))
    用到的符号:
    *代表任意个任意的字符(通配符)
    ..如果出现在方法的参数中,则代表任意参数
    如果出现在路径中,则代表本路径及其所有的子路径
试例
    execution(public * *(..)):意的公共方法
    execution(* set*(..)):任何一个以set开头的方法
    execution(* com.xyz.service.impl.*.*(...)):任意的返回值类型,在com.xyz.service.impl包下的任意类的任意方法的任意参数。
    execution(* com.xyz.service..*.*(..)):任意的返回值类型,在com.xyz.service.及其子包下的任意方法的任意参数。
    execution(* *..service.*.*(..)):service之前可以有任意子包
    execution(* *.service..*.*(..)):service之前只有一个包