AOP面向切面编程

1.什么是AOP?

AOP(Aspect Orient Programming): 面向切面编程

Aspect :表示切面,给业务方法增加的功能,叫做切面。 切面一般都是非业务功能, 而且切面功能一般都是可以复用的。 例如 日志功能, 事务功能, 权限检查,参数检查, 统计信息等等

Orient:面向,对着

Programming:编程

2.AOP作用

  • 让切面功能复用
  • 让开发人员专注业务逻辑,提高开发效率
  • 实现业务功能和其他非业务功能的解耦合
  • 给已存在的业务方法增加功能,不需要修改原本的代码

3.AOP编程术语

(1)切面(Aspect)

        给业务方法增加的功能。

(2)连接点(JoinPoint)

        连接切面的业务方法,这个方法执行时,会执行切面的功能。

(3)切入点(Pointcut)

        指声明的一个或多个连接点的集合。通过切入点指定一组方法,这些方法执行时,都能增加切面的功能。被标记为 final 的方法是不能作为连接点与切入点的。因为最终的是不能被修改的,不能被增强的。

(4)目标对象(Target)

        指将要被增强的对象,即包含主业务逻辑的类的对象。

(5)通知(Advice)

        表示切面的执行时间,通知定义了增江代码切入到目标代码的时间点,是木匾方法执行之前执行,还是之后执行等

4.AOP技术的实现

  • Spring:

        Spring框架实现AOP思想中的部分功能。Spring框架实现AOP操作比较繁琐。

  • Aspectj:

        独立的框架。

        官网地址:The AspectJ Project | The Eclipse Foundation

5.使用Aspectj框架实现AOP

5.1 常用的通知五种类型:

  • @Before:前置通知
  • @AfterReturnring:后置通知
  • @Around:环绕通知
  • @AfterThrowing:异常通知
  • @Ater:最终通知

5.2 AspectJ的切入点表达式

execution(modifiers-pattern? 
          ret-type-pattern
          declaring-type-pattern?
          name-pattern(param-pattern)
          throws-pattern?) 

modifiers-pattern] 访问权限类型

ret-type-pattern 返回值类型

declaring-type-pattern 包名类名

name-pattern(param-pattern) 方法名(参数类型和参数个数)

throws-pattern 抛出异常类型

?表示可选的部分

以上表达式共 4 个部分,黑色文字表示可省略部分

execution(访问权限 方法返回值 方法声明(参数) 异常类型)

你可能感兴趣的:(java,aop,java-ee,spring)