Spring的作用域和生命周期

news2025/1/19 17:21:57

目录

1.Bean的作用域

2.Bean的作用域的分类

3.设置作用域

4.Spring的执行流程(生命周期)

5.Bean的生命周期


1.Bean的作用域

lombok (dependency依赖) 是为了解决代码的冗余(比如说get和set方法)那些构造类所必要的方法

是为了更简单的替代java中必要代码的工具

2022以后的IDEA不需要添加lombok插件

@Date是个复合注解 就是@Setter和@Getter和@toString等等

Bean的作用域:bean在整个Spring当中是单例模式,

2.Bean的作用域的分类

官话:

bean的作用域默认是

1.Singleton单例模式(单例模式又分为饿汉和懒汉)因为单例模式性能最优所以Spring默认选择它

2.prototype 原型模式(多例模式)   每次取的都是类的原生的模式(类似于深克隆

3.request 请求作用域,类似与pototype的每次请求都会根据原型深拷贝一个实例,区别是它部分共享一个Bean(在一个Http请求和响应中共享一个bean)

限定SpringMVC中使用

4.session 作用域 :一次会话中共享一个bean对象。 同样只适用于SpringMVC

application 应用在SpringMVC里面 singsleton应用在Spring core里面,二者都是单例模式

application 归属于  ApplicationContext          singsleton 归属于IOC容器

3.设置作用域

用@Scope("prototype")

在@Bean上面设置,在注入Bean的时候设置

加了之后的影响是:每次去拿存入Spring中的对象的时候,不管中途有没有被修改,它拿到的是原来的那份。(实际上就算是修改也是修改的原来的拷贝)也就是变成了多例模式

4.Spring的执行流程(生命周期)

1.启动容器(加载xml配置)

2.加载bean对象(Bean对象的初始化)   加载bean标签/base-package加载扫描路径

3.根据注解(@Controller等)注册Bean到Spring容器中

4.装配Bean的属性(从Spring中取出Bean 放入属性 (private Stu stu))

5.Bean的生命周期

1.实例化Bean,这时候只是分配了内存,得到了毛坯房

2.属性赋值: 属性注入,setter注入   构造方法注入          ex:买了装修的材料,引用外部资源

3.Bean初始化                                                                  ex:装修

        a)实现了各种Aware通知的方法                               ex:各种通知,通知师傅

        b) 执行 BeanPostProcessor 初始化前置方法          ex :师傅们到场,勘察环境指定方

        c1)执行  @PostConstruct初始化方法

        c2)执行  xml里面的init-method方法                           ex :正式装修,先让使用科技的自动化注解师傅装修,再让传统的进行装修     

        

        d)执行 BeanPostProcessor 初始化后置方法           ex :打扫垃圾(木屑 油漆)等等

4.使用Bean                                                                      ex:住房子

5.销毁Bean                                                                      ex :卖房子

 属性注入是在初始化前面的,这个题目中A依赖于B,B依赖于C。如果从Spring中想要获取到A的对象,那么先执行A的属性注入,从代码中可以看到A需要B的属性注入,B又需要C的属性注入,C没有属性注入,然后执行C的初始化,打印了

此时C对象已经生成

然后执行

 此时B对象已经生成

然后回到第一个完成A的初始化。

也就是如果一直依赖下去的话都会执行一半的属性注入,然后下潜知道最后一个依赖对象构造完毕,然后再一级一级返回。类似于递归

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

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

相关文章

平衡二叉树的插入,删除以及平衡调整。

一,平衡二叉树插入失衡情况及解决方案 由于各种的插入导致的不平衡,每次调整都是最小不平衡子树。 LL:由于在结点A的 左孩子的左子树 插入结点导致失衡。 右单旋:①将A的 左孩子B 向右上旋转 代替A成为根节点       ②将A结…

从零开始:使用低代码平台开发OA系统的教程

随着中小型企业持续拥抱数字化转型,对支持业务流程的定制软件应用程序的需求增加。而办公自动化(OA)系统是一个有助于自动执行重复性任务并简化工作流程的系统。按照传统的开发模式,开发OA系统可能既耗时又昂贵,需要经验丰富的开发人员从头开…

ESP32-IDF MQTT连接aws亚马逊云

ESP32-IDF MQTT连接aws亚马逊云 文章目录 ESP32-IDF MQTT连接aws亚马逊云1. 云端配置2. 设备端配置3. 总结 1. 云端配置 登录AWS,地址: https://aws.amazon.com/ 选择IOT core 服务 创建云端设备,点击连接一台设备 进行云端设备创建,按照流…

1020. 飞地的数量

1020. 飞地的数量 C代码&#xff1a;DFS void dfs (int** grid, int x, int y, int m, int n) {if (x < 0 || x > m || y < 0 || y > n || grid[x][y] 0) {return;}grid[x][y] 0;dfs(grid, x 1, y, m, n);dfs(grid, x - 1, y, m, n);dfs(grid, x, y 1, m, n);…

Activiti7学习笔记

Activiti7学习 工作流相关概念 工作流 工作流(Workflow)&#xff0c;就是通过计算机对业务流程自动化执行管理。它主要解决的是“使在多个参与者之间按照某种预定义的规则自动进行传递文档、信息或任务的过程&#xff0c;从而实现某个预期的业务目标&#xff0c;或者促使此目…

new bing 初体验:辅助看论文刚刚好

1. new bing使用条件 &#xff08;1&#xff09;安装Microsoft edge的dev版本 https://www.microsoft.com/zh-cn/edge/download?formMA13FJ &#xff08;2&#xff09;浏览器侧栏打开 Discover (3) 进入new bing 页面 侧栏展示 new bing 如果这一步&#xff0c;没有聊天功能…

公司新来了个一年测试经验拿15K的,发现是个00后卷王····

个个都说想躺平了&#xff0c;可是有一说一&#xff0c;该卷的还是卷。 这不&#xff0c;前段时间我们公司来了个00后&#xff0c;才工作一年&#xff0c;跳槽到我们公司起薪15K&#xff0c;都快接近我了。后来才知道人家是个卷王&#xff0c;从早干到晚就差搬张床到工位睡觉了…

【数组的深刻理解】

#include<stdio.h> #define N 10 int main() {int a[N] { 0 }; //定义并初始化数组return 0; } 概念&#xff1a;数组是具有相同数据类型的集合。 数组的内存布局 #include<stdio.h> int main() {int a 10;int b 20;int c 30;printf("%p\n", &a…

【人工智能】距离空间(最基本的数学模型)

目录 一、说明 二、度量空间的意义 2.1 基于几何的定义 2.2 更抽象的距离问题 三、更广泛的距离空间定义 3.1 非物理意义的距离空间 3.2 代数学距离的定义 3.3 形形色色的距离模型 四、曼哈顿距离 4.1 曼哈顿距离定义 4.2 举个实际例子 4.3 下面证明&#xff0c;…

电话号码的字母组合--狗屎内容勿看

1题目 给定一个仅包含数字 2-9 的字符串&#xff0c;返回所有它能表示的字母组合。答案可以按 任意顺序 返回。 给出数字到字母的映射如下&#xff08;与电话按键相同&#xff09;。注意 1 不对应任何字母。 示例 1&#xff1a; 输入&#xff1a;digits "23" 输出…

Linux高级---k8s三种探针readinessProbe、livenessProbe和startupProbe

文章目录 一、POD状态1、POD常见的状态2、POD重启策略 二、就绪、存活两种探针1、探针介绍2、livenessProbe3、readinessProbe4、就绪、存活两种探针的区别5、**就绪**、**存活**两种探针的使用方法 三、LivenessProbe探针1、通过exec方式做健康探测2、通过HTTP方式做健康探测3…

【LeetCode】HOT 100(1)

题单介绍&#xff1a; 精选 100 道力扣&#xff08;LeetCode&#xff09;上最热门的题目&#xff0c;适合初识算法与数据结构的新手和想要在短时间内高效提升的人&#xff0c;熟练掌握这 100 道题&#xff0c;你就已经具备了在代码世界通行的基本能力。 目录 题单介绍&#…

python基于Vue的web信息收集程序设计

本信息收集程序设计以Django作为框架&#xff0c;B/S模式以及MySql作为后台运行的数据库。本系统主要包括以下功能模块&#xff1a;个人中心、用户管理、上传信息管理、分类管理、分类归档管理等模块&#xff0c;通过这些模块的实现能够基本满足用户信息收集程序设计的操作。 好…

Dubbo源码解析一服务暴露与发现

Dubbo 服务暴露与发现 1. Spring中自定义Schema1.1 案例使用1.2 dubbo中的相关对象 2. 服务暴露机制2.1 术语解释2.2 流程机制2.3 源码分析2.3.1 导出入口2.3.2 导出服务到本地2.3.3 导出服务到远程(重点)2.3.4 开启Netty服务2.3.5 服务注册2.3.6 总结 3. 服务发现3.1 服务发现…

HCIP综合实验

实验拓扑 实验场景 内部PC网络通信设置&#xff1a;我们需要在公司内部PC的网络设置上配置VLAN&#xff08;虚拟局域网络&#xff09;&#xff0c;以实现相同VLAN下的PC之间可以自由通信。然而&#xff0c;为了保护客户信息和保障网络安全&#xff0c;我们要求在相同VLAN下的客…

2023年ChatGPT商业版免授权源码/AI绘画/付费系统

这里写自定义目录标题 欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题&#xff0c;有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants 创建一个自定义列表如何创建一个…

【Selenium】浏览器配置

通过selenium启动浏览器是&#xff0c;会发现是启动的一个新的浏览器&#xff0c;我们的一些登录信息&#xff0c;浏览器配置都会清楚&#xff0c;通过执行比较不方便&#xff0c;那么这一篇就简单介绍下如何配置Chrome浏览器的配置。 配置浏览器信息 在配置之前&#xff0c;首…

【Python]】地图热力图如何绘制?(含源代码)

文章目录 一、问题引入 & 使用地图的说明1.1 问题的引入1.2 使用地图的说明 二、方法1三、方法2 一、问题引入 & 使用地图的说明 1.1 问题的引入 我们有一个中国各省份的数据集&#xff0c;要求绘制地图热力图&#xff0c;该怎么实现呢&#xff1f; 部分数据集如下&…

23种设计模式之迭代器模式(Iterator Pattern)

前言&#xff1a;大家好&#xff0c;我是小威&#xff0c;24届毕业生&#xff0c;在一家满意的公司实习。本篇文章将23种设计模式中的迭代器模式&#xff0c;此篇文章为一天学习一个设计模式系列文章&#xff0c;后面会分享其他模式知识。 如果文章有什么需要改进的地方还请大佬…

今天公司来了个拿 30K 出来的测试,实在太牛了....

今天上班开早会就是新人见面仪式&#xff0c;听说来了个很厉害的大佬&#xff0c;年纪还不大&#xff0c;是离职过来的&#xff0c;薪资已经达到中高等水平&#xff0c;很多人都好奇不已&#xff0c;能拿到这个薪资应该人不简单&#xff0c;果然&#xff0c;自我介绍的时候都惊…