• spring面试整理


    spring

    • 对AOP的理解
      • AOP 面向切面编程,spring主要是通过 JDK 和 cglib 代理对象实现。spring aop 主要运用在事务、日志、异常处理。通过在代码前后做增强,实现业务逻辑的隔离,提高代码的模块化
    • 对IOC的理解
      • ioc 又叫做控制反转,指通过spring来管理对象的创建,配置和生命周期。把 bean 的控制权交给spring,不需要人工来管理对象之间的复杂依赖关系,好处是易解耦。
    • spring aop 和 AspectJ aop
      • spring aop 基于动态代理实现,属于运行时增强
      • aspectJ 属于编译时增强
        • 编译时织入:源码和增强代码都有,直接使用 aspectj 编译器编译即可,生成一个新类
        • 编译后织入:源码已生成class或者打包成jar,此时增强方式则是编译后织入
        • 加载时织入,是指jvm 加载类的时候织入
    • factoryBean 和 beanFactory 的区别
      • beanFactory 是bean的工厂,applicationContext的父类,IOC容器的核心,负责生产和管理bean对象
      • factoryBean 则是一个工厂Bean,可以定制某一个类型Bean实例
    • spring 支持哪几种 bean 作用域
      • singleton: 默认的作用域,单例bean
      • prototype: 每次获取的都是新的 bean
      • request 每次 request 请求创建一个 bean 对象
      • session 同一个 session 的 request 共享一个 bean 示例
      • global session: 全局作用域
    • spring 事务的实现原理
      • spring 有两种事务实现,编程式事务 和 声明式事务
      • spring 事务主要通过 aop 代理实现,对象代码方法进行拦截,在方法执行前启动事务,在方法完成后,根据是否异常,进行提交或则回滚
    • bean的生命周期
      • 实例化,创建一个bean 对象
      • 填充属性,为属性赋值
      • 如果实现 xxxAware 接口,通过不同类型的Aware接口拿到spring里的资源
      • 如果实现 BeanPostProcess 则调用 postProcessBeforeInitialize 方法
      • 如配置了 ini-method ,则调用
      • 如实现 BeanPostProcess 则调用 postProcessAfterInitialize 方法
      • 如实现 DisposableBean 则调用
      • 执行 destroy-method 方法
    • 如何解决循环依赖
      • 三级缓存,第一级用来保存实例化,初始化都完成的对象
      • 第二级,用来保存实例化的对象,但未初始化完成的对象
      • 第三级:用来保存一个对象工厂,提供一个匿名内部类,用于创建二级缓存的对象
      • A->B B->A; a和b 互相依赖
        • 一开始时 a 实例化,并把a的对象工厂放入三级缓存
        • 接着注入 b ,转去实例化 b
        • 创建 b 时 发现依赖 a, 依次从一到三级查询 a,从三级缓存通过对象工厂获取 a,将 a 实例放入二级缓存,并删除三级缓存a的工厂。b 实例化完成放入一级缓存
        • a 继续实例化,从一级缓存获取 b 对象完成实例流程。从二级缓存删除 a 并放入一级缓存
    • 使用二级缓存可以解决循环依赖吗
      • spring的第三级缓存是为了处理代理对象,提前暴露代理后的对象。如果没有代理,二级也是可以的
    • spring mvc 的工作流程
      • 用户向服务器发送请求,被spring的 servlet DispatcherServlet 获取处理
      • DispatcherServlet 对url 进行解析,根据 url 调用 HandlerMapping 获取对应的 handerExecutionChain(hander)
      • DispatcherServlet 根据 handler 找对应的适配器 HandlerAdapter 来执行 handler
      • 提取 request 数据模型,数据转换,序列化等,填入 hander 入参,执行 controller 里业务逻辑
      • handler 执行完返回一个 modelAndView 对象
      • 根据 modelAndView 选择一个合适的 ViewResolver
      • ViewResolver 处理后返回响应给前端
    • spring 用到哪些设计模式
      • 单例模式:spring 的bean默认情况下都是单例
      • 工厂模式:通过 beanFactory 和 ApplicationContext 来生产 bean 对象
      • 代理模式:最常见的AOP 就是通过代理实现,spring主要是用到 JDK 和 cglib 代理
      • 模板方法模式:主要是一些对数据库操作的类,jdbcTemplate,redisTemplate
  • 相关阅读:
    OpenCv——鼠标事件笔记
    Git - 版本控制系统
    需突破技术成本瓶颈 秸秆饲料前景如何国稻种芯现代饲料规划
    初识 - Spring
    c语言基础程序——经典100道实例。
    力扣第134题 加油站 c++ 暴力 + 贪心
    Maven基础概念及配置
    vue--前端路由及vue-router两种模式
    配置 4G 模块为WAN口上网
    echarts 实现双Y轴刻度对齐
  • 原文地址:https://blog.csdn.net/u013591094/article/details/126267230