zoukankan      html  css  js  c++  java
  • spring之AOP详解

    AOP(Aspect-OrientedProgramming,面向切面编程)

    总的来说,开发过程中会有很多与具体业务无关的代码,如日志代码等。任何一个功能模块都将产生日志,代码的重复出现,导致日志一旦发生变化,多个模块就要进行大量的修改工作,可想而知,重复性的工作是很多的。因此AOP针对这一现象进行了很好的解决,将与业务无关的代码抽取出来进行了封装(切面)。

    AOP的基本概念

    • (1)Aspect(切面):通常是一个类,里面可以定义切入点和通知
    • (2)JointPoint(连接点):程序执行过程中明确的点,一般是方法的调用
    • (3)Advice(通知):AOP在特定的切入点上执行的增强处理,有before,after,afterReturning,afterThrowing,around
    • (4)Pointcut(切入点):就是带有通知的连接点,在程序中主要体现为书写切入点表达式
    • (5)AOP代理:AOP框架创建的对象,代理就是目标对象的加强。Spring中的AOP代理可以使JDK动态代理,也可以是CGLIB代理,前者基于接口,后者基于子类

    上面说过日志在AOP中的使用情况;实际开发中也会有其他的情况,比如人的信息查询,以列表的方式返回,通过使用AOP可以很好的脱敏处理(身份证号隐藏几位,保护其隐私)。

    通知方法:

    1. 前置通知:在我们执行目标方法之前运行(@Before)
    2. 后置通知:在我们目标方法运行结束之后 ,不管有没有异常(@After)
    3. 返回通知:在我们的目标方法正常返回值后运行(@AfterReturning)
    4. 异常通知:在我们的目标方法出现异常后运行(@AfterThrowing)
    5. 环绕通知:动态代理, 需要手动执行joinPoint.procced()(其实就是执行我们的目标方法执行之前相当于前置通知, 执行之后就相当于我们后置通知(@Around)

    因spring MVC和Spring是无缝的,现大多数使用springboot,简化了一些配置;SpringMVC是方法级别的拦截,一个方法对应一个Request上下文,所以方法直接基本上是独立的,独享request,response数据。在使用@Aspect时可以在方法中进行一些切面的处理。

    
    
    
    
    
    
  • 相关阅读:
    shell十三问?
    OS + Linux nmon / nmon analyser / nmon_analyser_v52_1.zip
    nGrinder windows agent / linux agent
    java Base64
    SearchServer Elasticsearch Cluster / kibana
    db mysql / mysql cluster 5.7.19 / my.cnf / thread_pool_stall_limit
    Mininet与真实网络链接的方法
    Install ProcessMaker 3.1 or 3.2 in CentOS/RHEL 7
    软件版本GA,RC,alpha,beta,Build 含义
    paper-9-Research and Implementation of MultiPath TCP on Mobile Smart Deviceses
  • 原文地址:https://www.cnblogs.com/changyuyao/p/13177559.html
Copyright © 2011-2022 走看看