每日八股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的销毁工作,容器关闭时不会主动调用它的销毁回调,资源释放需要业务自己手动处理。

相关推荐
七夜zippoe18 小时前
Spring AI 是什么?Java 工程师的 AI 开发第一站
java·人工智能·spring·ai·开发
wangjialelele19 小时前
一文梳理 Spring Cloud 核心组件:Eureka、Nacos、OpenFeign、LoadBalancer 与 Gateway
java·spring boot·spring·spring cloud·微服务·nacos
萧瑟余晖19 小时前
Spring Security综合实战与安全加固详解
java·安全·spring
CarIise20 小时前
Spring MVC 请求参数绑定与常用注解2
java·spring·mvc
Nebula_g20 小时前
SpringBoot企业级实战项目—云禾外卖—SpringBoot常用注解解析
java·网络·数据库·spring boot·后端·spring·javase
CarIise21 小时前
Spring MVC 请求参数绑定与常用注解
java·spring·mvc
萧瑟余晖21 小时前
Spring Security 6.x新特性与架构演进详解
java·spring·架构
萧瑟余晖21 小时前
Spring Security架构总览与过滤器链详解
spring·架构
猿究院_夏燊1 天前
Spring Bean 生命周期
java·后端·spring
流烟默1 天前
MCP第 5 篇:用 Spring AI 写 MCP:注解、自动配置、ChatClient 集成
人工智能·spring·mcp封装