Spring AOP - 静态代理、动态代理


title: Spring AOP - 静态代理、动态代理
date: 2019-07-31 15:07:43
tags: [Spring,JavaEE]


本文主要简单介绍一下静态代理和动态代理和使用Spring AOP应用

静态代理(jdk1.5)

目标对象和代理对象实现同一个接口,代理对象引用目标对象

  • 目标对象
    • 增删改查方法(主营业务)
  • 代理对象
    • 不仅仅实现目标对象的方法(主营业务),还可以做别的方法(额外业务)
    • 安全检查
    • 权限检查
    • 日志记录
  • 封装切面类-Aspect(对主营业务没有影响)
    • 散落在目标对象中的横切性关注点拿出来模块化到类中
      • 安全检查
      • 权限检查
      • 日志记录

动态代理

目标对象实现一个接口(增删改查),JVM通过反射动态生成代理对象,另外一个类实现

  • 目标对象
  • 代理对象(通过反射实现和目标对象相同的几口,通过反射)
    • 私有目标对象属性
    • 实现的接口方法
    • 切口方法

Spring AOP

通过动态代理的方式

AOP术语解释

  • 目标对象-TargetObject

    • 散落在目标对象中的横切性关注点拿出来模块化到类(MyAspect)中
  • 标识方式

    • 注解
    • spring配置
  • MyAspect(@Aspect注解)

    • Advice

      通知在什么时候执行

      • before:

        @Before("allMethod")
        
      • after:

      • throw:

    • PointCut

      设置范围,具体作用在目标对象的哪个方法上与JoinPoint的关系-植入(Weave)

      @Pointcut("execution(* add*(..)) || execution(*del*(..)))"
      void allMethod();
      
    • JoinPoint

      标识,只是一个概念逻辑

你可能感兴趣的:(学习)