【后端面经-Spring】Spring 中 bean 的生命周期)

端面,spring,bean,生命周期 · 浏览次数 : 24

小编点评

**目录** 1. bean简介 2. 生命周期 3. 参考资料 **1. bean简介** bean是一个对象,是由Spring中的IoC创建、实例化的对象。一般的java对象,使用的时候创建,无需就释放内存进行销毁,而bean的生命周期更加复杂作用域singleton:默认单例形式,唯一的bean实例。prototype:每次请求都会创建一个新的bean实例。request:每次HTTP请求都会创建一个新的bean实例,该作用域仅在当前http request内有效。session:每次HTTP请求都会创建一个新的bean实例,该作用域仅在当前HTTP session内有效。global-session:全局session作用域,仅仅在基于portlet的web应用中才有意义,Spring5已经没有了。 **2. 生命周期实例化/创建依靠反射进行实例化,而不需要像一般的java对象一样手动创建;属性填充使用依赖注入进行属性填充;初始化完成初始化之后,bean可以使用;销毁容器关闭或者停止服务的时候,销毁该对象;类比人的一生:出生->学习->成长->死亡bean的一生:实例化->属性填充->初始化->销毁 **3. 参考资料** 1. 阿里云开发社区-《聊透 Spring bean 的生命周期》 2. 掘金社区-《Spring Bean 生命周期,好像人的一生》 3. SegmentFault- 《一文读懂 Spring Bean 的生命周期》

正文

1.bean简介

  • bean是一个对象,是由Spring中的IoC创建、实例化的对象。
  • 一般的java对象,使用的时候创建,不需要就释放内存进行销毁,而bean的生命周期更加复杂
  • 作用域
    • singleton:默认单例形式,唯一的bean实例。
    • prototype:每次请求都会创建一个新的bean实例。
    • request:每次HTTP请求都会创建一个新的bean实例,该作用域仅在当前http request内有效。
    • session:每次HTTP请求都会创建一个新的bean实例,该作用域仅在当前HTTP session内有效。
    • global-session:全局session作用域,仅仅在基于portlet的web应用中才有意义,Spring5已经没有了。

2. 生命周期

  1. 实例化/创建
  • 依靠反射进行实例化,而不需要像一般的java对象一样手动创建;
  1. 属性填充
  • 使用依赖注入进行属性填充;
  1. 初始化
  • 完成初始化之后,bean可以使用;
  1. 销毁
  • 容器关闭或者停止服务的时候,销毁该对象;
  1. 类比
  • 人的一生:出生->学习->成长->死亡
  • bean的一生:实例化->属性填充->初始化->销毁

3. 参考资料

  • 阿里云开发社区-《聊透 Spring bean 的生命周期》
    • 链接
    • 细致全面讲述了 bean 的生命周期,辅以代码理解。
  • 掘金社区-《Spring Bean 生命周期,好像人的一生》
    • 链接
    • 用形象的社会现象类比bean对象的生命周期,易于理解,并且用一个PersonBean作为示例,给出生命周期对应的代码。
  • SegmentFault- 《一文读懂 Spring Bean 的生命周期》
    • 链接
    • 详细介绍了bean对象的概念,以及bean的生命周期

与【后端面经-Spring】Spring 中 bean 的生命周期)相似的内容:

【后端面经-Spring】Spring 中 bean 的生命周期)

本文简单介绍了spring中bean的生命周期

【后端面经-Spring】Spring简介

本文简单介绍了Spring的基本概念、组成模块、核心思想和相关拓展。

【后端面经-Java】String与StringBuffer与StringBuilder的比较

本文从String、StringBuffer、StringBuilder三者的特性出发,详细介绍三者的不同之处。

【后端面经-数据库】MySQL的存储引擎简介

对于mysql中常用的四类存储引擎MyISAM、InnoDB、MEMORY、MERGE的介绍和性能对比。

【后端面经-数据库】MySQL的事务隔离级别简介

对于数据库常用的事务隔离级别进行解释和区分,并解释三类读取错误——脏读、不可重复读、幻读的区别。

【后端面经】MySQL主键、唯一索引、联合索引的区别和作用

本文介绍了MySQL中主键、唯一索引、联合索引的特点和区别,并且介绍了“索引”对于数据库操作的影响。

【后端面经-Java】Java创建线程的方法简介

本文简要介绍了java中创建线程的四种方式,并介绍了线程概念,适合新手阅读。

【后端面经-java】java线程池满的处理策略

本文对java线程池做了具体介绍,并且讨论了java线程池满了之后的拒绝策略。

【后端面经-Java】HashMap详解

本文详细介绍了hashmap,包括基本概念、hashmap数据结构、关键变量和重要方法,并且结合源码进行分析。

【后端面经-Java】Synchronize和ReentrantLock区别

本文介绍了Synchronize和ReentrantLock同步锁的相似和不同点,并指出两者的主要特点和适用场景。