zoukankan      html  css  js  c++  java
  • Java

    AOP

    面向切面编程,预编译方式和运行时动态代理实现在不修改源码情况下给程序动态统一添加功能

    • 代理模式,建立在spring抽象事务管理之上的声明性事务管理
    • 支持用户自定义的切面
    • 业务逻辑分离,低耦合

    核心:横切关注点的分离和织入
    场景:日志记录,性能统计,安全控制,事务处理
    其他几个重要概念

    • 切面
    • 切入点
    • 切点表达式

    Aspect

    通过一个 简单示例 引入对Aspect的学习
    环绕通知=前置通知+目标方法执行proceed()+后置通知

    PointCut

    • @within和@target:类注解
    • @annotation:方法注解
    • execution():execution( modifier-pattern?/*修饰符*/ ret-type-pattern/*返回类型*/ declaring-type-pattern?/*方法模式*/ name-pattern(param-pattern)/*参数模式*/ throws-pattern?/*异常模式*/ )
    /*1、第一个*号:表示返回类型,*号表示所有
      2、包名:表示需要拦截的包名,后面..表示当前包和当前包的所有子包: impl包、子孙包下所有类的方法
      3、第二个*号:表示类名,*号表示所有
      4、*(..):最后这个星号表示方法名,*号表示所有,括弧里面表示方法参数,..表示任何参数 */
    @pointcut("execution(* com.sample.service.impl..*.*(..))")
    

    JoinPoint

    Object[] getArgs //返回目标方法的参数
    Signature getSignature //返回目标方法的签名
    Object getTarget //返回被织入增强处理的目标对象
    Object getThis //返回AOP框架为目标对象生成的代理对象
    
  • 相关阅读:
    Navicat 安装教程
    office 2016 安装教程
    PyCharm 2018.1.1软件安装教程
    Pytorch学习笔记02----深度学习中的epochs,batch_size,iterations详解
    Anaconda 安装步骤
    Python基础汇总001_txt文件读写、字典使用等
    Pytorch学习笔记01----pytorch框架介绍
    es6的学习
    vue的使用与安装 npm -v报错
    js弹窗返回值详解(window.open方式)
  • 原文地址:https://www.cnblogs.com/wjcx-sqh/p/12305986.html
Copyright © 2011-2022 走看看