美文网首页
5.4测试 Spring AOP面向切面编程 概念

5.4测试 Spring AOP面向切面编程 概念

作者: 大也 | 来源:发表于2023-12-04 15:39 被阅读0次

    !!!结论 接口getBean 找的是实现类 代理类虽然在ioc中但是没有最终实现方法
    Calculator studentController1 = annotationConfigApplicationContext.getBean(Calculator.class);

    1. 情景一
      • bean 对应的类没有实现任何接口
      • 根据 bean 本身的类型获取 bean
        • 测试:IOC容器中同类型的 bean 只有一个

          正常获取到 IOC 容器中的那个 bean 对象

        • 测试:IOC 容器中同类型的 bean 有多个

          会抛出 NoUniqueBeanDefinitionException 异常,表示 IOC 容器中这个类型的 bean 有多个

    2. 情景二
      • bean 对应的类实现了接口,这个接口也只有这一个实现类
        • 测试:根据接口类型获取 bean
        • 测试:根据类获取 bean
        • 结论:上面两种情况其实都能够正常获取到 bean,而且是同一个对象
    3. 情景三
      • 声明一个接口
      • 接口有多个实现类
      • 接口所有实现类都放入 IOC 容器
        • 测试:根据接口类型获取 bean

          会抛出 NoUniqueBeanDefinitionException 异常,表示 IOC 容器中这个类型的 bean 有多个

        • 测试:根据类获取bean

          正常
          4.情景四

    • 声明一个接口
    • 接口有一个实现类
    • 创建一个切面类,对上面接口的实现类应用通知
      • 测试:根据接口类型获取bean

        正常

      • 测试:根据类获取bean

        无法获取

    原因分析:

    • 应用了切面后,真正放在IOC容器中的是代理类的对象
    • 目标类并没有被放到IOC容器中,所以根据目标类的类型从IOC容器中是找不到的

    5.情景五 cglib 继承 重写方法 切入

    • 声明一个类
    • 创建一个切面类,对上面的类应用通知
      测试:根据类获取 bean,能获取到

    jdk代理


    image.png

    cglib 继承


    image.png

    相关文章

      网友评论

          本文标题:5.4测试 Spring AOP面向切面编程 概念

          本文链接:https://www.haomeiwen.com/subject/gjaawdtx.html