每日八股day25

本系列帖子为鼠鼠复习八股巩固记忆和个人理解所写,如有错误纯属本人实力不佳,欢迎各位大佬阅读指正

1.Bean的生命周期?

实例化Instantiation,Spring根据BeanDefinition,利用反射创建Bean原始对象。

属性填充Populate Bean,自动扫描依赖,通过反射完成依赖注入(DI),给对象属性赋值。

Aware接口回调,容器检测Bean是否实现各类Aware接口,注入容器相关资源。

BeanPostProcessor前置处理postProcessBeforeInitialization,执行后置处理器的初始化前置方法,可对Bean进行包装修改。

初始化Initialization

BeanPostProcessor后置处理postProcessAfterInitialization,初始化完成后执行,AOP代理就是在这里生成代理对象。

容器关闭,销毁Destruction

2.Bean是否单例?

默认单例,但不是全部都是单例,由scope作用域决定。

作用域:

singleton,单例整个IOC容器中只创建一个Bean实例,容器启动时创建,存入单例池复用。

prototype,多例每次getBean()都会新建全新对象,容器不管理它的销毁,适用于状态非常瞬时的Bean。

request,一次HTTP请求创建一个实例,仅在Spring Web应用程序有效 ,适用于web应用中需求局部性Bean。

session,同一个会话一个实例,该Bean实例在用户会话范围内共享,尽在Spring web应用中有效,适用于用户会话相关Bean。

globalSession,Protlet相关,极少使用。

application,整个web应用全局共享,尽在Spring web应用中有效,适用于应用程序范围内共享的Bean。

webSocket,在webSocket范围内只存在一个Bean实例,仅在支持WebSocket的应用程序中有效,适用于在WebSocket会话范围内共享的Bean。

custom scopes,Spring允许开发者自定义作用域,通过实现Scope接口来创建新的Bean作用域。

追问:Bean的单例和非单例,生命周期是否一样?

创建阶段生命周期一致,销毁阶段完全不同。

销毁阶段:

单例:容器启动时创建,存入单例池,容器关闭时,IOC容器自动触发销毁方法。

多例:每次getBean都会创建实例,Spring容器不负责维护prototype Bean的销毁工作,容器关闭时不会主动调用它的销毁回调,资源释放需要业务自己手动处理。

相关推荐
lv__pf8 小时前
Spring之AOP底层源码解析(下)【TL spring14】
java·后端·spring
互联网中的一颗神经元10 小时前
02. 核心概念与术语表
java·jvm·spring
晚染烟1 天前
每日八股day24
spring
一个有温度的技术博主1 天前
从“为什么要用 Spring“到“它到底帮我解决了什么“
java·spring
风流 少年1 天前
Spring AI 2.0:Flux
java·人工智能·spring
用户3126874877201 天前
一个请求进来到底发生了什么?Spring MVC 请求处理全链路源码拆解
spring
爱敲键盘的猴子1 天前
Spring MVC 详解(一):全注解开发与请求响应处理
java·spring·mvc
counting money1 天前
SpringBoot 项目创建(IDEA不全,还需要修改)
java·spring boot·spring·maven
阿部多瑞 ABU1 天前
从0到1:用 Spring Boot 3.4 + Vue3 做一个能“智能排道次“的运动会编排系统(附核心算法)
java·spring boot·后端·算法·spring