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框架为目标对象生成的代理对象
    
  • 相关阅读:
    【动态规划】51nod1780 完美序列
    【树形dp】bzoj4726: [POI2017]Sabota?
    初涉manacher
    【数位dp】bzoj3131: [Sdoi2013]淘金
    【思维题 kmp 构造】bzoj4974: [Lydsy1708月赛]字符串大师
    web框架
    Bootstrap补充
    jQuery之jQuery扩展和事件
    JQuery之文档操作
    JQuery之属性操作
  • 原文地址:https://www.cnblogs.com/wjcx-sqh/p/12305986.html
Copyright © 2011-2022 走看看