【速记】一些Spring面试题的速记口诀

帮助记忆,实际还是自己多练。有错误请纠正。

1.Spring 中应用了哪些设计模式呢?

  1. 工厂模式 : Spring 容器本质是一个大工厂,使用工厂模式通过 BeanFactory、ApplicationContext 创建 bean 对象。
  2. 代理模式 : Spring AOP 功能功能就是通过代理模式来实现的,分为动态代理和静态代理。
  3. 单例模式 : Spring 中的 Bean 默认都是单例的,这样有利于容器对 Bean 的管理。
  4. 模板模式 : Spring 中 JdbcTemplate、RestTemplate 等以 Template 结尾的对数据库、网络等等进行操作的模板类,就使用到了模板模式。
  5. 观察者模式: Spring 事件驱动模型就是观察者模式很经典的一个应用。
  6. 适配器模式 :Spring AOP 的增强或通知 (Advice) 使用到了适配器模式、Spring MVC 中也是用到了适配器模式适配 Controller。
    7.策略模式:Spring 中有一个 Resource 接口,它的不同实现类,会根据不同的策略去访问资源。

以下两个作用域于只在 Web 应用中适用:

  • 上口诀:工厂创建Bean,代理实现AOP,单例管理利,模板简化层,观察响应事,适配联结用,策略选Resource。
    再简单一点:工厂代理单,模板观适策。


    2.说一说什么是 Io?什么是 DI? 

           所谓的IoC(控制反转,Inversion of Control),就是由容器来控制对象的生命周期和对象之间的关系。以前是我们想要什么就自己创建什么,现在是我们需要什么容器就帮我们送来什么。

  • IoC控制流:IoC(控制反转)改变了传统的控制流,不再是组件控制如何获取依赖,而是依赖被外部容器控制并反转这个过程。
  • DI注人心:DI(依赖注入)就像是给组件注入了新的生命,它让组件的依赖关系由外部容器注入,而不是组件自己创建或查找,使得组件更加专注于自己的职责。

    3.说说 BeanFactory 和 ApplicantContext?

  • BeanFactory(Bean 工厂)是 Spring 框架的基础设施,面向 Spring 本身。BeanFactory 是类的通用工厂,可以创建并管理各种类的对象。
  • ApplicantContext(应用上下文)建立在 BeanFactoty 基础上,面向使用 Spring 框架的开发者。ApplicationContext 由 BeanFactory 派生而来,提供了更多面向实际应用的功能。
  • 心脏BeanFactory泵生命BeanFactory作为Spring容器的核心,就像心脏一样为应用程序提供动力和生命,负责Bean的创建和生命周期管理。
  • 身体Application连脉动ApplicationContext作为更高级的容器,就像身体一样包含了BeanFactory的所有功能,并提供了额外的服务和特性,如同身体中的血管和脉络,连接并支持整个应用程序的运作。
    BeanFactory基础设,简单快速单线程接。
    ApplicationContext全功能,安全多线程企业行。

    4.你知道 Spring 容器启动阶段会干什么吗?

  • 加载配置:容器读取配置信息,这些信息可以来自XML文件、注解或Java配置类。
  • 注册Bean:容器根据配置信息创建BeanDefinition对象,并将它们注册到容器中。
  • 实例化Bean:容器根据注册的信息实例化Bean,创建Bean的实例。
  • 处理依赖关系:容器处理Bean之间的依赖关系,通过依赖注入将所需的资源提供给Bean。
  • 初始化Bean:容器调用Bean的初始化方法或执行初始化回调,如BeanPostProcessors。
  • 发布事件:容器可以发布上下文刷新事件,通知其他组件上下文已准备就绪。
  • 完成启动:完成所有Bean的初始化后,容器启动成功,应用程序上下文准备就绪。
     
  • 载配置注册Bean实例Bean打依赖初始Bean发事件

    5.能说一下 Spring Bean 生命周期吗?

  • 实例化:Spring 容器根据 Bean 的定义创建 Bean 的实例,相当于执行构造方法,也就是 new 一个对象。
  • 属性赋值:相当于执行 setter 方法为字段赋值。
  • 初始化:初始化阶段允许执行自定义的逻辑,比如设置某些必要的属性值、开启资源、执行预加载操作等,以确保 Bean 在使用之前是完全配置好的。
  • 销毁:相当于执行 = null,释放资源。

    6.Bean 定义和依赖定义有哪些方式?

    有三种方式:直接编码方式配置文件方式注解方式


    7.有哪些依赖注入的方法?

    Spring 支持构造方法注入属性注入工厂方法注入,其中工厂方法注入,又可以分为静态工厂方法注入非静态工厂方法注入
    构造传参确,属性设值灵,工厂创造新。
     

  • 构造传参确:构造方法注入确保在创建Bean时传入所有必需的依赖,保证了对象的完整性和立即可用性。
  • 属性设值灵:属性注入通过Setter方法或直接字段注入,提供了灵活的依赖设置方式,但可能需要在对象创建后进行依赖的注入。
  • 工厂创造新:工厂方法注入允许通过自定义的工厂方法来创建Bean实例,这种方式在处理复杂的实例化逻辑时特别有用。

    8.Spring 中的 Bean 的作用域有哪些?

  • singleton : 在 Spring 容器仅存在一个 Bean 实例,Bean 以单实例的方式存在,是 Bean 默认的作用域。
  • prototype : 每次从容器重调用 Bean 时,都会返回一个新的实例。
  • request : 每一次 HTTP 请求都会产生一个新的 Bean,该 Bean 仅在当前 HTTP Request 内有效。
  • session : 同一个 HTTP Session 共享一个 Bean,不同的 HTTP Session 使用不同的 Bean。


    单例原型常相见,请求会话web现。

  • 19
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值