什么是循环依赖,Spring是如何处理循环依赖的? (3级缓存机制,Bean加载过程,Spring解决的是对象循环依赖,无法解决构造器循环依赖直接报错)
    Bean的生命周期?
    答:class —> BeanDefinition—->对象(代理Proxy.newInstance) —> 依赖注入(BeanFactory) —> BeanNameAware —>初始化—> aop—>bean对象 —>对象池中进行管理

    BeanDefinition 注册阶段 — registerBeanDefinition
    BeanDefinition 合并阶段 — getMergedBeanDefinition
    Bean 实例化前阶段 — resolveBeforeInstantiation
    Bean 实例化阶段 — createBeanInstance
    Bean 实例化后阶段 —populateBean
    Bean 属性赋值前阶段 — populateBean
    Bean Aware 接口回调阶段 — initializeBean
    Bean 初始化前阶段 — initializeBean
    Bean 初始化阶段 — initializeBean
    Bean 初始化后阶段 — initializeBean
    Bean 初始化完成阶段 — preInstantiateSingletons
    Bean 销毁前阶段 — destroyBean
    Bean 销毁阶段 — destroyBean

    SpringMVC处理请求流程
    springmvc 参数解析绑定原理
    spring ioc和 aop原理 ioc 反射 工厂模式 aop 动态代理
    jdk动态代理和cglib动态代理
    java动态代理是利用反射机制生成一个实现代理接口的匿名类,在调用具体方法前调用InvokeHandler来处理。
    cglib动态代理是利用asm开源包,对代理对象类的class文件加载进来,通过修改其字节码生成子类来处理。
    JDK 动态代理是基于接口的,代理生成的对象只能赋值给接口变量。
    CGLIB 是通过生成子类来实现的,代理对象无论是赋值给接口还是实现类这两者都是代理对象的父类。
    Spring内建的Bean作用域有几种 ?
    singleton — 默认单例 ☆
    prototype — 原型
    request — Web中使用
    session
    application
    websocket