• Spring - 框架相关内容2


    一、Spring的两大核心编程思想

    1. IOC(Inversion of Control,控制反转

      获得依赖对象的过程由自身管理变为了通过容器进行DI(dependency injection,依赖注入)。

      - A和B是两个类,当B中的方法需要使用A的对象时,叫做B依赖A
      - 常见的依赖关系:action(controller)依赖service、service依赖dao、service依赖其他service
    2. AOP(Aspect Oriented Programming,面向切面的编程)

      将额外功能(加在一系列操作中的冗余代码)都放到通知中,然后和切入点组成切面

      一个切面指的就是一个(动态)代理对象。

    二、AOP(面向切面的编程)

    动态代理

     
    

    AOP底层封装的就是动态代理。

    切面

    切面:一个切面指的就是一个(动态)代理对象,切面由通知切入点组成。

    • 通知:除了目标方法以外的操作,比如事务通知、日志通知……

    • 切入点:被加入通知的方法或类。

    通知的分类

    下图使用动态代理的代码说明通知的分类:

     三、AOP编程步骤

    1. 引入依赖

      spring-aop spring-expression spring-aspects
    2. 开发通知类(除了环绕通知,通知类中只需要写额外功能即可)

      Spring提供的接口:

      • MethodBeforeAdvice 前置通知

      • AfterReturningAdvice 返回后通知(后置通知)

      • ThrowsAdvice 异常通知

      • MethodInterceptor 环绕通知 (org.aopalliance.intercept.MethodInterceptor)

      前置通知

     返回后通知+异常通知

     环绕通知

    在某些业务中,环绕通知也可以不执行目标方法返回其他的值或者执行目标方法之后返回其他的值。

    当环绕通知不执行目标方法时,前置通知、后置通知、异常通知失效。

    3.配置切面

     4.启动工厂测试

     四、切入点表达式

            1.execution方法级别的切入点表达式

    execution(返回值类型 包名.类名.方法名(参数列表))

    可以使用*通配0~n个任意字符。子包可以通过..来写,不限参数类型也是..

    切入点 符合这个表达式的方法

            2. within类级别的切入点表达式

    within(包名.类名)

    包名和类名本身可以使用*通配0~n个任意字符

    切入点 符合这个表达式的类中的所有方法

            3.@annotation注解级别的切入点表达式

    @annotation(注解类的全限定名)

    切入点 被这个注解修饰的方法


  • 相关阅读:
    动手学深度学习(五)Kaggle房价预测
    求两个单链表的交点
    字节面试流程及面试题无私奉献,吐血整理
    网络安全深入学习第五课——热门框架漏洞(RCE— Apache Shiro 1.2.4反序列化漏洞)
    WEB 渗透之越权
    一张图进阶 RocketMQ - NameServer
    深入理解栈与队列:从基本概念到高级实现
    红外平行光管ZEMAX光学设计/SOLIDWORKS
    说说你对工厂模式的理解?应用场景?
    Vue模板语法
  • 原文地址:https://blog.csdn.net/XHW0901/article/details/126400532