Bean的生命周期和执行流程

文章目录

    • 一.Bean的生命周期
      • 1.Bean的作用域
      • 2.设置Bean的作用域
      • 3.Spring的执行流程
      • 4.Bean的生命周期

一.Bean的生命周期

1.Bean的作用域

Bean的作用域指的是Bean在Spring容器中的某种行为模式,默认是singleton(单例模式),一共分为6种,后四种用于spring mvc中有用

  • singleton:单例模式,Spring默认的作用域。在每个Spring应用中,每个Bean定义只会创建一个实例。
  • prototype:原型模式,每次从容器中获取的时候,都会产生一个新对象。
  • request:请求作用域,Web应用中的HTTP请求。对于每次HTTP请求,Spring会创建一个新的Bean。该作用域只适用于Web应用
  • session:会话作用域,Web应用中的HTTP会话。在同一个会话期间,Spring会创建一个新的Bean。该作用域也只适用于Web应用
  • application:全局作用域,Web应用中的整个应用(即整个ServletContext)。在同一个应用中,Spring只会创建一个Bean。该作用域也只适用于Web应用。
  • websocket:WebSocket作用域,用于WebSocket相关的操作。

注意:除singleton和prototype外,其余的4种作用域都只适用于Web应用。此外,不同的作用域对应了不同的Bean生命周期方法,如preInitialize和preDestroy等。

2.设置Bean的作用域

使⽤ @Scope 标签就可以⽤来声明 Bean 的作⽤域
列如:
@Component

public class Users {@Scope(ConfigurableBeanFactory.SCOPE_PROTOTYPE)@Bean(name = "u1")public User user1() {User user = new User();user.setId(1);user.setName("张三"); return user;}
}

3.Spring的执行流程

简单概括为:Bean 执⾏流程(Spring 执⾏流程):启动 Spring 容器 -> 实例化 Bean(分配内存空间,从⽆到
有) -> Bean 注册到 Spring 中(存操作) -> 将 Bean 装配到需要的类中(取操作)。

4.Bean的生命周期

Bean的生命周期可以大致分为5部分

  • 1.实例化Bean(为Bean分配空间)
  • 2.设置属性(将当前依赖的Bean进行注入和装配)
  • 3.初始化
    • 实现了各种 Aware 通知的⽅法,如 BeanNameAware、BeanFactoryAware、
      ApplicationContextAware 的接⼝⽅法;
      执⾏ BeanPostProcessor 初始化前置⽅法;
      执⾏ @PostConstruct 初始化⽅法,依赖注⼊操作之后被执⾏;
      执⾏⾃⼰指定的 init-method ⽅法(如果有指定的话);
      执⾏ BeanPostProcessor 初始化后置⽅法
  • 4.使用Bean
  • 5.销毁Bean

在这里插入图片描述

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

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

相关文章

无涯教程-Android - Broadcast Receivers

Broadcast Receivers 仅响应来自其他应用程序或系统本身的广播消息,这些消息有时称为events或intents。例如,应用程序还可以启动广播,以使其他应用程序知道某些数据已下载到设备并可供他们使用,因此广播接收器将拦截此通信并启动适…

VTK——angleWidget的3D转换

文章目录 3D空间坐标转换例程心得 3D空间坐标转换 在冠状图、矢状面、横截面等创建的角度组件的三个端点坐标,不能直接用在3D视图中。这是因为2D切片的坐标是基于像素的,而3D空间的坐标可能是基于实际物理尺寸的。 解决方案是使用2D点的坐标、切片的物理…

React hook 10种常见 Hook

React Hook是什么? React官网是这么介绍的: Hook 是 React 16.8 的新增特性。它可以让你在不编写 class 的情况下使用 state 以及其他的 React 特性。 完全可选的 你无需重写任何已有代码就可以在一些组件中尝试 Hook。但是如果你不想,你不…

avalonia、WPF使用ScottPlot动态显示ECG心电图

文章目录 avalonia、WPF使用ScottPlot动态显示ECG心电图实现效果,动态效果懒得录视频了安装代码部分UpdateData方法就是用来更新心电图表的方法, 根据消息队列数据去更新是视图中的ScottPlot 图表 avalonia、WPF使用ScottPlot动态显示ECG心电图 avalonia…

如何在 Python 中将图像转换为 PDF

一、说明 如何使得图像转化成pdf文件, 想要将一个或多个图像转换为 PDF 文档?看看img2pdf和PyPDF2软件包就是您的最佳选择。 二、需要哪些程序包? 首先,您只需要一个 Python 环境,最好是 3.10 或更高版本。本教程中的代…

VR全景:助力乡村振兴,实现可持续发展

引言: 随着科技的飞速发展,虚拟现实(VR)全景技术正在以惊人的速度改变着我们的生活方式和产业格局。全景技术不仅在娱乐、教育等领域取得了巨大成功,也为乡村振兴提供了全新的机遇。通过以乡村为背景的VR全景体验&…

2023-08-27 LeetCode每日一题(合并区间)

2023-08-27每日一题 一、题目编号 56. 合并区间二、题目链接 点击跳转到题目位置 三、题目描述 以数组 intervals 表示若干个区间的集合,其中单个区间为 intervals[i] [starti, endi] 。请你合并所有重叠的区间,并返回 一个不重叠的区间数组&#…

Python实战之数据表提取和下载自动化

在网络爬虫领域,动态渲染类型页面的数据提取和下载自动化是一个常见的挑战。本文将介绍如何利用Pyppeteer库完成这一任务,帮助您轻松地提取动态渲染页面中的数据表并实现下载自动化。 一、环境准备 首先,确保您已经安装了Python环境。接下来…

SQLServer2008数据库还原失败 恢复失败

源地址:http://www.taodudu.cc/news/show-1609349.html?actiononClick 还原数据库问题解决方案 在还原数据库“Dsideal_school_db”时,有时会遇见上图中的问题“因为数据库正在使用,所以无法获得对数据库的独占访问权”,此时我们…

npm获取函数名称和测试js脚本

这边遇到一个类似于测试的需求,需要从一个js文件里获取函数名,然后尝试执行这些函数和创建实例。这边首先遇到了一个问题是如何动态获取js里的函数名和类名,我这边暂时没找到特别好的方法,已有的方法都是类似于提取语法树那种提取…

【SQL】1731. 每位经理的下属员工数量 ( 新思想:确定左表,依次添加后续字段)

leetcode题目链接 注意点 确定左表(即,确定result表中的主键),依次添加后续字段。注意:主键可能是一个字段,也可能是多个字段COUNT(DISTINCT()),一般为了防止重复,使用COUNT计数时&#xff0c…

系列十三、spring5整合mybatis(配置方式)

一、业务代码 1.1.、pom <dependencies><!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java --><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>8.0.26<…

数据仓库总结

1.为什么要做数仓建模 数据仓库建模的目标是通过建模的方法更好的组织、存储数据&#xff0c;以便在性能、成本、效率和数据质量之间找到最佳平衡点。 当有了适合业务和基础数据存储环境的模型&#xff08;良好的数据模型&#xff09;&#xff0c;那么大数据就能获得以下好处&…

以“迅”防“汛”!5G视频快线筑牢防汛“安全堤”

近期&#xff0c;西安多地突发山洪泥石流灾害。防洪救灾刻不容缓&#xff0c;为进一步做好防汛工作&#xff0c;加强防洪调度监管&#xff0c;切实保障群众的生命财产安全&#xff0c;当地政府管理部门亟需拓展智能化技术&#xff0c;通过人防技防双保障提升防灾救灾应急处置能…

Ubuntu20.04配置mysql配置主从复制

ubuntu20.04&#xff1a;mysql主库 sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf # 修改完毕重启 sudo service mysql stop sudo service mysql start主库mysqld.cnf配置 [mysqld] ... # bind-address>->--- 127.0.0.1 # 注释掉&#xff0c;允许外部连接 # mysqlx-b…

Node爬虫项目精简版 wallhaven网站实操 2023.8.29

练习地址&#xff1a; https://wallhaven.cc/toplist const express require(express); const axios require(axios); const cheerio require(cheerio); const schedule require(node-schedule); const fs require(fs);async function downloadImage(url) {const response…

时序预测 | MATLAB实现基于PSO-BiLSTM、BiLSTM时间序列预测对比

时序预测 | MATLAB实现基于PSO-BiLSTM、BiLSTM时间序列预测对比 目录 时序预测 | MATLAB实现基于PSO-BiLSTM、BiLSTM时间序列预测对比效果一览基本描述程序设计参考资料 效果一览 基本描述 MATLAB实现基于PSO-BiLSTM、BiLSTM时间序列预测对比。 1.Matlab实现PSO-BiLSTM和BiLSTM…

【微服务部署】05-安全:强制HTTPS

文章目录 安全 : 强制HTTPS的两种方式1. Ingress配置重定向2. 应用程序配置3. Ingress配置4. 应用程序配置代码总结 安全 : 强制HTTPS的两种方式 互联网发展中&#xff0c;安全是非常重要的&#xff0c;由其是现在HTTPS非常普及的情况下&#xff0c;应用程序在公网上一般都会被…

uniapp 开发小程序,封装一个方法,让图片使用线上地址

1.在main.js文件中&#xff0c;添加以下代码&#xff1a; 复制使用&#xff1a; // 图片使用网络地址 Vue.prototype.localImgSrc function(img){//项目的地址域名&#xff0c;例如百度return "https://baidu.cn/static/index/images/" img; }2.在页面中直接使用&…

Arch Linux 使用问题集锦

以下是本人在使用 Arch linux 过程中遇到的一些问题及解决思路&#xff0c;当前一段时间会不断更新&#xff0c;也会不适当去除某些不再复现的问题。 一、 挂载硬盘挂载报错 因断电等原因&#xff0c;再次启动电脑时&#xff0c;硬盘分区偶尔会出现挂载失败的情况&#xff0c…