当前位置: 首页 > news >正文

Spring中Bean的作用域和生命周期

目录

  • bean 的六种作用域
    • 单例作用域:
    • prototype:原型作用域
    • request:请求作用域:
    • session:会话作用域:
    • Application: 全局作用域 :
  • Bean的生命周期
    • 实例化
    • 属性赋值:
    • 初始化:
    • 使用bean
    • 销毁bean

bean 的六种作用域

Bean 的作用域是指 Bean 在 Spring 框架中的某种行为模式,比如单例作用域,在spring中只有一份是全局共享的


作用域说明
singleton每个SpringIoC容器内同名称的bean只有一个实例(单例)(默认)
prototype每次使用该bean时会创建新的实例(非单例)
request每个HTTP 请求⽣命周期内, 创建新的实例(web环境中, 了解)
websocket每个WebSocket⽣命周期内, 创建新的实例(web环境中, 了解)
session每个HTTP Session⽣命周期内, 创建新的实例(web环境中, 了解)
application每个ServletContext⽣命周期内, 创建新的实例(web环境中, 了解)

下面通过看每个对象的地址来查看,Dog对象的某种行为模式

单例作用域:

每个SpringIoC容器内同名称的bean只有一个实例

@AutowiredApplicationContext context;@Resource(name = "singleDog")Dog singleDog;@RequestMapping("/singleton")public String singleton(){Dog contextDog = context.getBean("singleDog",Dog.class);return "contextDog: " + contextDog + " resources: " + singleDog;}

在这里插入图片描述

prototype:原型作用域

** 每次使用该bean时会创建新的实例**


@Bean@Scope("prototype")public Dog prototypeDog(){return new Dog();}//从spring上下文获取
@RequestMapping("/prototy")public String prototy(){Dog contextDog = context.getBean("prototypeDog",Dog.class);return "contextDog: " + contextDog + " resources: " + singleDog;}

在这里插入图片描述

在这里插入图片描述在这里插入图片描述在这里插入图片描述

request:请求作用域:

每个HTTP 请求生命周期内, 创建新的实例

@Bean@RequestScopepublic Dog requestDog(){return new Dog();}//从spring上下文获取@RequestMapping("/request")public String request(){Dog contextDog = context.getBean("requestDog", Dog.class);return "contextDog:"+ contextDog + ", resources:" +requestDog;}

在这里插入图片描述

#一级目录

session:会话作用域:

每个HTTP Session⽣命周期内, 创建新的实例


@Bean@SessionScopepublic Dog sessionDog(){return new Dog();}//从spring上下文获取@RequestMapping("/session")public String session(){Dog contextDog = context.getBean("sessionDog", Dog.class);return "contextDog:"+ contextDog + ", resources:" +sessionDog;}

在这里插入图片描述

Application: 全局作用域 :

每个ServletContext生命周期内, 创建新的实例(web环境中, 了解)

//原对象
@Bean@ApplicationScopepublic Dog applicationDog(){return new Dog();}//从spring上下文获取@RequestMapping("/application")public String application(){Dog contextDog = context.getBean("applicationDog", Dog.class);return "contextDog:"+ contextDog + ", resources:" +applicationDog;}

在这里插入图片描述

Bean的生命周期

生命周期指的是⼀个对象从诞生到销毁的整个生命过程, 我们把这个过程就叫做⼀个对象的生命周期,bean对象生命周期可以分为5个部分

实例化

就是为Bean分配内存空间

属性赋值:

通过bean注入和装配的方式, 如@AutoWired,@resource

初始化:

执行各种通知,在AutowireCapableBeanFactory接口中有定义AbstractAutowireCapableBeanFactory和AbstractBeanFactory方法中实现

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

使用bean

销毁bean

销毁容器的各种⽅法, 如 @PreDestroy , DisposableBean 接口⽅法, destroymethod.

相关文章:

  • 51c大模型~合集119
  • win11离线安装donet3.5
  • Linux中的信号量
  • 【python】deepcopy深拷贝浅拷贝(结合例子理解)
  • 3分钟极速部署MySQL:brew/apt/yum全平台一条龙实战
  • 【计算机网络 | 第三篇】常见的网络协议(二)
  • 数据结构实验7.1:二叉树的遍历
  • WIN10重启开机不用登录,直接进入桌面
  • Mysql insert一条数据的详细过程
  • C语言求执行次数
  • 【牛客练习赛137 C】题解
  • 开发工具~
  • Android音视频开发
  • Vue.js核心功能实现
  • 计算机视觉与深度学习 | TensorFlow基本概念与应用场景:MNIST 手写数字识别(附代码)
  • Mamba模型时间序列预测
  • Java创建对象的方式
  • 中级软件设计师 - 知识点(附真题)目录大全
  • 2025年4月19日-美团春招笔试题-第三题
  • Java synchroinzed和ReentrantLock
  • 新增1839个!2024年度本科专业备案和审批结果,公布
  • 首届中国—海湾阿拉伯国家合作委员会和平利用核技术论坛在成都召开
  • 全国登记在册民营企业超过5700万户,占企业总量92.3%
  • 管理规模归零,华夏基金“ETF规模一哥”张弘弢清仓卸任所有产品
  • 央视网评论员:婚约不是性许可——山西订婚强奸案背后的性教育盲区
  • 一场小型越野赛为何吸引众多越野大神打卡?