美文网首页微服务Study
Spring 常见面试题

Spring 常见面试题

作者: OOMNPE | 来源:发表于2021-04-20 00:28 被阅读0次

    1、Bean的生命周期

    bean的生命周期

    2、循环依赖的解决方式

    1、实例化和初始化分开,提前暴露对象;
    2、三级缓存,暂存半成品对象;
    引用链接

    3、BeanFactory和ApplicationContext的区别

    1、BeanFactory是Spring比较原始的Factory,无法使用Spring的许多插件:如AOP、web应用等;
    2、ApplicationContext接口由BeanFactory接口派生而来,在BeanFactory的基础上扩展了很多功能;
    3、BeanFactory采用延迟加载(使用时加载),而ApplicationContext默认是启动时一次性加载;
    引用链接

    3、Spring中用到的设计模式

    • 工厂模式
      通过 BeanFactory 或 ApplicationContext 创建 bean 对象就使用的是工厂模式;
    • 单例模式
      Spring中bean的默认作用域就是singleton(单例)的;
      实现方式:通过ConcurrentHashMap单例注册表来保存所有的单例对象,key是bean的名称,value是对象引用;
    • 代理模式
      AOP都是采用动态代理实现,根据代理对象是否实现了接口来决定采用JDK Proxy还是Cglib来创建代理对象;


      image.png

      AOP将一些通用的功能抽象出来,简化代码,提高系统扩展性;

    • 模板方法
      模板模式:定义一个方法的实现骨架,将具体的实现放到子类中;使在不改变算法骨架的情况下,重定义某些特殊步骤的实现,也让公共代码得到复用;
      Spring中jdbcTemplate这样以Template结尾的数据库操作类都以模板方法来实现;
      一般情况下,我们都用继承的方式来实现模板模式,但Spring没有使用这种方式,而是采用CallBack+模板方法结合使用的方式,提供代码复用的效果,增加灵活性;
      引用链接
    • 观察者模式
      Spring中的事件驱动就使用到了观察者模式;
      事件体ApplicationEvent、事件监听者ApplicationListener、事件发布者ApplicationEventPublisher
      ContextStartedEvent:ApplicationContext 启动后触发的事件;
      ContextRefreshedEvent:ApplicationContext 初始化或刷新完成后触发的事件;
      ContextClosedEvent:ApplicationContext 关闭后触发的事件。

    相关文章

      网友评论

        本文标题:Spring 常见面试题

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