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的后置处理进行改变的

  • 相关阅读:
    redis 解析配置文件
    redis 五大数据类型之sortedset
    redis 五大数据类型之hash篇
    redis 五大数据类型之set篇
    redis 五大数据类型之list篇
    redis_key键
    redis 五大数据类型之string篇
    redis使用
    redis下载安装
    Neutron Kilo-Liberty-Mitaka各版本区别
  • 原文地址:https://www.cnblogs.com/gnwzj/p/10526982.html
Copyright © 2011-2022 走看看