zoukankan      html  css  js  c++  java
  • Aspect Oriented Programming

    ===

    动态代理

    实现方式

    jdk动态代理:使用jdk中的Proxy,InvocationHandler创建代理对象

    ​ jdk动态代理要求目标必须实现接口

    cglib动态代理:第三方工具库,创建代理对象,原理是继承。通过继承目标类,创建子类。子类就是代理对象,要求目标类和方法不能是final

    动态代理的作用

    1. 在目标类源代码不变的条件下增加功能
    2. 减少代码冗余
    3. 使开发人员专注于业务逻辑
    4. 解耦合,让业务功能和非业务功能分离

    AOP(Aspect Oriented Programming)

    面向切面编程,基于动态代理,可以使用jdk,cglib两种代理方式。

    AOP就是动态代理的规范化,将动态代理的实现步骤和方法都定义好,让开发人员

    用统一的方式使用动态代理

    • Aspect:切面,指给目标类额外增加的功能

      切面的特点:一般都是非业务方法,常见为日志,事务,统计,参数检查,权限验证等

    • Orient:面向

    • Programming:编程

    1. 需要在分析项目功能时找出切面(独立于业务的增强方法)
    2. 合理的安排切面执行时间(目标方法前or后)
    3. 合理的安排切面执行的位置,在哪个类,哪个方法添加增强功能

    一些术语

    1. Joinpoint:连接点,连接业务和增强方法的位置
    2. Pointcut:切入点,指多个连接点集合
    3. 目标对象:欲增强方法的类
    4. Advice:通知,表示切面功能的执行时间

    一个切面有三个关键要素

    1. what:切面的功能代码,要干什么
    2. where:切面执行位置,用pointcut表示
    3. when:切面执行时间,用Advice表示

    AOP的实现

    aop是一个规范,是动态代理的规范和标准

    实现框架:

    1. spring:spring在内部实现了aop规范,能做aop工作

      spring主要在事务处理使用aop。

      但由于其实现较笨重,在项目开发中很少使用spring的aop

    2. aspectJ:一个开源的专门做aop的框架,spring框架中集成了aspectj框架,可直接通过spring使用aspectj的功能

      实现方式:

      • xml配置文件:配置全局事务
      • 注解实现是更常用的方法,aspectj有5个注解。

    学习aspectj框架的使用

    切面的执行时间,这个执行时间在规范中叫做Advice(通知,也有人称为增强),在aspectj框架中使用注解表示执行时间点:(xml标签也可以)

    • @Before
    • @AfterReturning
    • @Around
    • @AfterThrowing
    • @After

    aop实现步骤

    image-20210314172339857

    具体代码见:

    github.com/AndyLeezCode/Learn_Spring/tree/master/ch05-aop-leading

    github.com/AndyLeezCode/Learn_Spring/tree/master/ch06-aop-aspectj

    小结

    8DAE2181483EE3CEC7D7A64B68086440

    4816E6F7DB1E5FAE44C403D887DF8F18

  • 相关阅读:
    AS3打开本地文件
    Android上的Adobe AIR应用程序运行环境发布了!
    as3 创建遮罩层和自定义带参数的事件
    NetStream.appendBytes, 走向Flash P2P VOD的第一步
    BitmapData的整理
    AS3 in FlashDevelop
    站内站外AS3资源导航帖
    swf不能访问本地资源的解决办法
    JSON 序列化和反序列化——JavaScriptSerializer实现
    Json.net说法——(一)修饰标签,日期序列化
  • 原文地址:https://www.cnblogs.com/potofsalt/p/14533460.html
Copyright © 2011-2022 走看看