• JavaSpring【五、AOP基础】


    概念:

    AOP——面向切面编程,通过预编译/动态代理实现程序功能的统一维护
    主要功能是:日志、性能统计、安全控制、事务处理、异常处理

    实现方式

    • 预编译——AspectJ
    • 动态代理——SpringAOP、JbossAOP

    常用概念

    • Advice通知的类型

    Spring的AOP实现

    • 纯Java实现,无需特殊编译,不需要控制类加载器
    • 只支持方法执行连接点
    • 目的是提供一种APO与SpringIOC之间的整合
    • 与AspectJ相比,SpringAOP并不全面

    有接口和无接口的SpringAOP的区别(没看懂)

    • 有接口,默认使用标准JavaSErvice动态代理作为AOP代理
    • 无接口使用CGLIB代理

    配置、切面实现、切入点,切入方式

    Demo:
    首先需要增加依赖包

    在Spring.xml中配置切面

    切入点

    切面实现

    带参切入方法实现

    测试类

    带参切入点测试结果

    Introductions引入

    • 简介允许一个切面声明一个实现指定接口的通知对象,并且提供了一个接口实现来代表这些对象
    • 由 aop:aspect 中的 aop:declare-parents 元素声明该元素用于声明所匹配的类型拥有一个新的parent
      例如:有个Service提供server服务,想在不更改Service代码的前提下对该Service增加验证,即可以定义一个接口和实现,再通过Introductions为Service增加新的接口,使Service可以通过验证后再执行server
      Demo:
      声明一个接口,并提供实现

    想要引入的类

    配置

    Test方法

    执行结果

    advisor

    • 就像一个小的自包含的方面,只有一个advice
    • 切面自身通过一个bean表示,并且必须实现某个advice接口,同事,advisor也可以很好的利用AspectJ的切入点表达式
    • Spring通过配置文件中的aop:advisor 元素支持advisor 实际使用中大多数情况下他会和transactional advice配合使用
    • 为了定义一个advisor的优先级以便让advice可以有序,可以使用order属性来定义advisor的顺序
      例如:该标签只是切入的另一种方式,只需要配置切入点和实现了通知接口的类即可实现切面
      Demo:
      配置

    实现了Advice接口的实现类

    切入点测试调用方法

    测试

    结果

  • 相关阅读:
    09_注解01
    hasattr() getattr() setattr() 函数使用方法
    xpath
    you-get
    Out of range value for column 'phon' at row 1
    五, Authentication和Permissions
    四,ViewSets和Routers
    二,Request和Response
    一,Serializer和ModelSerializer
    三,APIView、GenericAPIView、Mixins总结
  • 原文地址:https://www.cnblogs.com/shanelau/p/6831359.html
Copyright © 2020-2023  润新知