zoukankan      html  css  js  c++  java
  • springAOP源码解析-190313

    Spring相关笔记

    SpringAOP讲解 子路老师讲解

    spring与aspectj的区别
    答:它们的区别是 spring是动态加载 aspectj是静态加载,再编译过程就已经实现切面,此时会往代码中注入一些代码。
    @Aspect 就说明切面
    @Pointcut 就是连接点 @Pointcut(“args(java.lang.String)”) 只要方法的参数第一个是String字符串就说明是一个连接点 (个人理解:日志管理可以用到相关知识)。
    以上注解可以结合官网学习相关知识

    spring动态代理用的那些方法:cglibAopProxy JDKDynamicAopProxy
    如何证明是在getBean使用的代理 ? 选择题:A getBean B 初始化
    最终是在DefaultLisableBeanFactory resoleveNamedBean方法 调用 AbstractBeanFactory中
    Srping初始化只会遍历单例
    微观上讲Spring容器就是一个存储单例对象的singletonObjects是 一个Map 。所以getBean的时候就是从map中获取对象所以 代理应该是初始化中使用的。以上选择题选择B初始化
    初始化的时候如何看到何时做的代理呢?
    答:我们可以找到singletonObjects的put方法。
    原生对象如何变成代理对象呢?
    答:BeanWrapper初始化后获取原生对象再经过 initializeBean方法的时候完成代理。其中涉及到后置处理器,spring就是有后置处理器构成 将原生对象变成代理对象时就是由ApplicationContextAware的后置处理进行改变的

  • 相关阅读:
    C#里边的控件缩写大全(比较规范)
    jQuery的一些备忘
    有趣的史实~
    值类型 VS 引用类型~
    一道笔试题和UML思想 ~
    数据绑定以及Container.DataItem几种方式与用法分析
    用户控件与自定义控件的异同
    .NET资源站点汇总~
    C#中抽象类和接口的区别
    弹出窗口的一些东西(一),备忘~
  • 原文地址:https://www.cnblogs.com/gnwzj/p/10526982.html
Copyright © 2011-2022 走看看