Spring的执行流程 Bean的作用域与生命周期

news2024/11/26 3:44:58

目录

Bean的作用域

设置作用域

Spring的执行流程

Bean的生命周期


Bean的作用域

Bean的作用域是指, Bean在Spring框架中的某种行为模式

1.singleton  单例模式

        singleton是Spring中的默认的Bean作用域,它表示在整个应用程序中只存在一个Bean实例,每 次请求该Bean实例时都会返回同一个Bean

2.prototype 原型模式(多例模式)

        prototype表示每次请求该bean时,都会重新创建一个实例,每个bean实例都有自己的属性和状态,彼此之间是相互独立的

3.request 请求

        request表示在一次http请求中,只会存在一个bean实例,在同一个请求里多次请求该bean都会指向同一个实例.在不同的http请求里,bean的实例是相互独立的

4.session 会话

        session表示在一次http session里只会存在一个bean实例,同一个session里多次请求该bean都会返回同一个bean实例.在不同的session会话里,bean的实例是相互独立的

5.application 全局

        application表示在一个servlet context只存在一个bean实例,该作用域在                                   Spring  ApplicationContext 上下文中有效

6.websocket

        websocket 表示在一个 WebSocket 中只存在一个 Bean 实例。该作用域只在                         Spring  ApplicationContext 上下文中有效。

设置作用域

通过@Scope注解来设置作用域

1.直接设置

2.枚举设置

怕拼错单词的就可以通过这个方法设置

3.通过xml配置文件设置

Spring的执行流程

1.启动容器

2.读取Spring配置并实例化Bean

        根据扫描路径,找到所有含有五大类注解和方法注解的Bean对象,然后实例化Bean(分配内存空间)

3.将Bean加入到容器中

4.装配Bean属性

        给当前类的Bean对象装配属性,通过@Autowried @Resource 注解 注入.

Bean的生命周期

在 Spring 中,Bean 的生命周期指的是 Bean 实例从创建到销毁的整个过程。Spring 容器负责管理 Bean 的生命周期,包括实例化、属性赋值、初始化、销毁等过程。

Bean 的生命周期可以分为以下几个阶段:

1.实例化

        Spring容器启动时,会根据配置文件实例化Bean对象,就是为Bean分配内存空间.据Bean的作用域的不同,实例化的方式也会不同. 如singleton就是立即实例化,prototype则是在被请求时才会实例化

2.属性赋值

        Spring通过注解设置的属性进行依赖注入( DI ), 有三种注入方式:属性注入,setter注入,构造方法注入

3.初始化

        3.1执行各种通知

        3.2执行初始化前置方法

        3.3初始化

        3.4执行初始化后置方法

4.使用

        在初始化完成后,Bean就可以被应用程序调用了.应用程序可以通过Spring容器获取Bean的实例,并调用Bean的各种方法

5.销毁

        在应用程序关闭时,Spring 容器会自动销毁所有的 Bean 实例。Bean 的销毁方法可以通过实现 DisposableBean 接口、@PreDestroy 注解等方式实现。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1101254.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【光流法实现目标追踪:Python实战指南】

文章目录 概要一、目标追踪概述二、光流法进行目标追踪小结 概要 在当今计算机视觉领域,图像处理被广泛应用于多个关键领域,包括图像分类、目标检测、语义分割、实例分割和目标追踪。其中,图像分类和目标检测作为基础应用为其他高级领域奠定…

MPLS基础

1. MPLS原理与配置 MPLS基础 (1)MPLS概念 MPLS位于TCP/IP协议栈中的数据链路层和网络层之间,可以向所有网络层提供服务。 通过在数据链路层和网络层之间增加额外的MPLS头部,基于MPLS头部实现数据快速转发。 本课程仅介绍MPLS在…

天软特色因子看板 (2023.10 第05期)

该因子看板跟踪天软特色因子A05005(近一月单笔流涌金额占比(%),该因子为近一个月单笔流通金额占比因,用以刻画股票在收盘时,力资金在总交易金额中所占的比重。。 今日为该因子跟踪第05期,跟踪其在SW801030 (申万化工) 中的表现&am…

危险化工品出口注意事项及法规要求_箱讯科技

随着全球化工品市场的不断发展,危险化工品出口业务逐渐成为国际贸易的重要组成部分。然而,由于危险化工品具有潜在的危险性,出口过程中需严格遵守相关法规和注意事项,以确保运输安全和顺畅。本文将详细介绍危险化工品出口注意事项…

面试算法26:重排链表

问题 给定一个链表,链表中节点的顺序是L0→L1→L2→…→Ln-1→Ln,请问如何重排链表使节点的顺序变成L0→Ln→L1→Ln-1→L2→Ln-2→…? 分析 首先把链表分成前后两半。在示例链表中,前半段链表包含1、2、3这3个节点&#xff0c…

路径规划-learning

参考视频:【全】无人驾驶系列知识入门到提高 本文旨在对视频内容规划控制方面做一些学习记录,希望帮助有需要的人学习提高。不对处,望指正。 文章概要: 1 什么是规划 规划的本质、如何解决规划问题 2 传统的规划方法 机器人学基础…

基于Java的列车票务信息管理系统设计与实现(源码+lw+部署文档+讲解等)

文章目录 前言具体实现截图论文参考详细视频演示为什么选择我自己的网站自己的小程序(小蔡coding) 代码参考数据库参考源码获取 前言 💗博主介绍:✌全网粉丝10W,CSDN特邀作者、博客专家、CSDN新星计划导师、全栈领域优质创作者&am…

C++入门之引用与内联函数

一、引用 1、初步理解 引用在语法上的理解就是起别名,用法就是在类型后面加&,例子:int a 1; int& b a; 上例所示,执行后,b就是a的别名,它们代表同一块空间,a的改变会影响b&#xff0…

MySQL 迁移完不能快速导数据了?

关于 5.6 升级到 5.7 之后,GTID 的相关功能的注意事项。 作者:秦福朗,爱可生 DBA 团队成员,负责项目日常问题处理及公司平台问题排查。热爱互联网,会摄影、懂厨艺,不会厨艺的 DBA 不是好司机,di…

一文学会使用WebRTC API

WebRTC(Web Real-Time Communication)是一项开放标准和技术集合,由 W3C 和 IETF 等组织共同推动和维护,旨在通过Web浏览器实现实时通信和媒体流传输。WebRTC于2011年6月1日开源并在Google、Mozilla、Opera支持下被纳入万维网联盟的…

【分享】教你加速访问GitHub,进来学!

哈喽,大家好,木易巷来啦! 众所周知,Github是一款程序猿必备的代码托管平台,上面已经存在了无数前辈的心血!经常需要在上面查看大佬写的一些好用的开源项目,无赖国外网站的速度实在让人难以接受。…

【linux】重定向+缓冲区

重定向缓冲区 1.重定向1.1重定向本质1.2重定向接口1.3重定向分类1.3.1>输出重定向1.3.2>>追加重定向1.3.3<输入重定向 2.理解 >&#xff0c; >>&#xff0c; <3.如何理解linux下一切皆文件4.缓冲区4.1理解缓冲区问题4.1.1为什么要有缓冲区4.1.2缓冲区刷…

php获取10年内的年份并加入下拉列表

要实现的效果 在html中内嵌php循环将数组中的年份加入下拉列表 <div class="form-group"><label>年份:</label><div class="input-group"><div class="input-group-prepend"><span class="input-group-te…

7天狂揽 1.3w star 的 MetaGPT,他们的目标让软件公司为之一惊

在 AI 产品爆炸的今天&#xff0c;拥有各种本领的 AI 产品层出不穷&#xff0c;但 MetaGPT 的出现仍然显的格外耀眼&#xff0c;其可以实现只输入单一 prompt&#xff0c;就可以输出需求分析、需求文档、技术架构、最终代码等等产物&#xff0c;这相当于一个开发团队的输出成果…

012 Spring Boot + Vue 电影购票系统

部分代码地址&#xff1a; https://github.com/XinChennn/xc012-movie Spring Boot Vue 电影购票系统 一、项目结构 网上购票后台管理客服模块 二、环境介绍 后端&#xff1a;SpringBoot SpringSecurity MyBatis-Plus前端&#xff1a;Vue ElementUi数据库&#xff1a;…

mongodb如何多表查询,如同时查询店铺以及里面对应的商品

多表查询场景介绍 一种很常见的场景&#xff0c;比如电商首页中&#xff0c;需要同时展示最近比较火热的店铺&#xff0c;以及直接展示店铺里对应的商品。或者用户下单之后购物车里可以看到所选的商品以及对应的店铺。如果不知道如何用mongodb自带的查询语句快速查询的话&#…

有限差分法

目录 1.原理介绍 1.1 有限差分法介绍 1.2 有限差分法步骤 2.案例分析 2.1 问题重述 2.2 问题求解 1.原理介绍 1.1 有限差分法介绍 有限差分法是一种常用的数值计算方法&#xff0c;用于求解偏微分方程或常微分方程的数值解。它的基本思想是将连续的空间区域离散化为有限…

mac电脑安装雷蛇管理软件,实现调整鼠标dpi,移动速度,灯光等

雷蛇官网只给了win版本驱动 mac版本驱动到这里下载: GitHub - 1kc/razer-macos: Color effects manager for Razer devices for macOS. Supports High Sierra (10.13) to Monterey (12.0). Made by the community, based on openrazer. 安装后会显示开发者不明,请丢弃到垃圾桶.…

Java:SpringBoot整合Spring Batch示例

目录 文档基础概念Tasklet方式示例Chunk方式示例参考文章 文档 https://docs.spring.io/spring-batch/docs/4.3.9/reference/html/index.html 基础概念 JobLauncher&#xff1a;作业启动器&#xff0c;启动作业的入口。对应的实现类为SimpleJobLauncher。Job&#xff1a;作业…

PLC通过Modbus转Profinet网关连接变频器控制电机配置案例

在本案例中&#xff0c;通过使用Modbus转Profinet网关&#xff08;XD-MDPN100&#xff09;&#xff0c;PLC可以通过Profinet协议与变频器进行通信和控制。这样&#xff0c;PLC可以实现对电机的转速调节、启停控制等功能。 同时&#xff0c;通过Modbus转Profinet&#xff08;XD-…