【推荐】深入浅出benan的生命周期

news2025/3/3 18:24:09

目录

1.spring 管理JavaBean的过程(生命周期)

2.spring的JavaBean管理中单例模式及原型(多例)模式

2.1 . 默认为单例,但是可以配置多例

2.2.举例论证

   2.2.1 默认单例

 2.2.2 设置多例

2.2.3单例与多例的初始化的时间点


1.spring 管理JavaBean的过程(生命周期)

      在Spring框架中,Bean的生命周期是指从它被创建、初始化,到最终被销毁的整个过程。

        需要注意的是,Bean的销毁并不是由Java的垃圾回收器自动处理的,而是由Spring容器负责管理和销毁的。

如下图就是bean的整个生命周期图,它的一个初始化过程

  •  通过XMLJava annotation(注解)以及Java Configuration(配置类),等方式配置JavaBean,现在我用的是xml配置文件的方式,BeanDefinitionReader:解析Bean的定义。在Spring容器启动过程中,会将Bean解析成Spring内部的BeanDefinition结构;理解为:将spring.xml中的<bean>标签转换成BeanDefinition结构,有点类似于XML解析。
  • BeanDefinition:包含了很多属性和方法。例如:id、class(类名)、scope、ref(依赖的bean)等等。其实就是 将bean(例如<bean>)的定义信息 存储到这个对应BeanDefinition相应的属性中,最终得到List<BeanDefinition>
  • BeanFactoryPostProcessor:是Spring容器功能的扩展接口。JavaBean初始化之前       先执行自己的业务
  • BeanFactory:bean工厂。它按照我们的要求生产我们需要的各种各样的bean。
  • Aware感知接口:在实际开发中,经常需要用到Spring容器本身的功能资源,例如:BeanNameAware、ApplicationContextAware等等,BeanDefinition 实现了 BeanNameAware、ApplicationContextAware
  • BeanPostProcessor:后置处理器。在Bean对象实例化和引入注入完毕后,
  • destory:销毁

2.spring的JavaBean管理中单例模式及原型(多例)模式

2.1 . 默认为单例,但是可以配置多例

      单例的优点:节约内存;缺点:有变量污染;JavaBean是跟着spring上下文初始化的,容器生对象生,容器死对象死,因为单例只创建一次,所以最开始的时候就创建。

       多例的优点:无变量污染;缺点:及其消耗内存;JavaBean是使用的时候才会创建,销毁跟着jvm走。

举例:假如你有两个儿子,他们两个都想要一个玩具车。

       案例一,买一个,哥哥上午玩,弟弟下午玩,但是上午哥哥玩的时候如果玩具脏了,             刮花了,那么对于弟弟而言这个玩具已经不是原有车的状态,但是给我们省钱了=====》单例

        案例二:买两个,一人一个,这样就不存在污染,各玩各的,但是我们的钱包就扁了======》多例

2.2.举例论证

                2.2.1 默认单例

        这个就是那辆车,bean对象,这里设了一个变量属性 num 来验证是不是单例,变量改变了

package com.sy.beanlife;

import com.sy.ioc.service.UserService;
import com.sy.ioc.service.impl.UserServiceImp;
import com.sy.ioc.service.impl.UserServiceImpl;

import java.util.List;

public class ParamAction {
	private int age;
	private String name;
	private List<String> hobby;
	private int num = 1;
	private UserService userService=new UserServiceImp();
	// private UserBiz userBiz = new UserBizImpl1();

	public ParamAction() {
		super();
	}

	public ParamAction(int age, String name, List<String> hobby) {
		super();
		this.age = age;
		this.name = name;
		this.hobby = hobby;
	}

	public void execute() {
		// userBiz.upload();
		// userBiz = new UserBizImpl2();
		System.out.println("this.num=" + this.num++);
		userService = new UserServiceImpl();
		System.out.println(this.name);
		System.out.println(this.age);
		System.out.println(this.hobby);
	}
}

       再模拟方法数据,进行测试

package com.sy.beanlife;

public class InstanceFactory {
	public void init() {
		System.out.println("初始化方法");
	}

	public void destroy() {
		System.out.println("销毁方法");
	}

	public void service() {
		System.out.println("业务方法");
	}
}

 然后,进行xml文件配置,

前台测试:是否默认为单例模式,并且变量被污染了,num值发生了变化,说明被污染了,默认为单例模式 

效果展示: 

 2.2.2 设置多例

        原代码不变,再xml配置文件中,选择多例

 前台测试结果,发现num值没有被污染 

 结果展示:

2.2.3单例与多例的初始化的时间点

        当是多例的时候,不会初始化

   而当单例的时候,会初始化

今天小编的分享就结束呐,生活总是需要不断去学习新的知识,多想想然后再去实操,持之以恒,经验和思维都会发生转变,我们要保持谦虚学习和自信的态度,各位加油!

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

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

相关文章

【数学】CF1242 A

Problem - 1242A - Codeforces 题意&#xff1a; 思路&#xff1a; Code&#xff1a; #include <bits/stdc.h>#define int long longusing i64 long long;constexpr int N 2e3 10; constexpr int M 2e3 10; constexpr int mod 998244353; constexpr int Inf 1e1…

Java中级部分

以下内容来源自Java 面试指南 | JavaGuide(Java面试 学习指南)和自己的学习笔记整理&#xff0c;这里我整理了自己比较感兴趣的点&#xff0c;也有助于我自己理解~ 异常 Exception 和 Error 有什么区别&#xff1f; 在 Java 中&#xff0c;所有的异常都有一个共同的祖先 jav…

【学习笔记之vue】 Cannot find module ‘node-sass‘

Cannot find module node-sass方案一&#xff08;不通&#xff09; 下载node-sass组件 >> npm install -g cnpm>>cnpm install node-sass下载时报错 方案二 使用npm下载node-sass组件 >>npm install node-sassok

Oracle字段长度不足位数补零

Oracle字段长度不足位数补零 有时候从数据库中取出的月份值是1&#xff0c;而不是01&#xff0c;该怎么办呢 SELECTLPAD( CODE_MONTH, 2, 0 ) FROMtb_cube_TY001 WHERECODE_BM_MEATYPE TY20 AND code_measure MYLX01 AND code_month <> ~ AND CODE_ENTITY 01A AND…

Linux 进程间通信——信号量

一、信号量描述 信号量是一个特殊的变量&#xff0c;一般取正数值。它的值代表允许访问的资源数目。 获取资源时&#xff0c;需要对信号量的值进行原子减一&#xff0c;该操作被称为P操作&#xff0c;当信号量值为0时&#xff0c;代表没有资源可用&#xff0c;P操作会阻塞。释…

2023一建案例100题

一、某施工单位承接了两栋住宅楼&#xff0c;总建筑面积 65000m&#xff0c;均为筱板基础(上翻梁结构)&#xff0c;地下 2层&#xff0c;地上30 层&#xff0c;地下结构连通&#xff0c;上部为两个独立单体一字设置&#xff0c;设计形式一致&#xff0c;地下室外墙南北向距离 4…

008永磁电机FOC控制:磁场定向控制不就两个变换就搞定啦

在现代工业中&#xff0c;电机广泛应用于各类设备和机械系统中。为了提高电机性能并降低能量损耗&#xff0c;电机控制技术得到了不断的发展和创新。其中&#xff0c;磁场定向控制&#xff08;Field-Oriented Control&#xff0c;简称FOC&#xff09;作为一种先进的电机控制策略…

在 IDEA 中使用 Git开发 图文教程

在 IDEA 中使用 Git开发 图文教程 一、连接远程仓库二、IDEA利用Git进行开发操作三、分支操作3.1 新建分支3.2 切换分支3.3 删除分支3.4 比较分支3.5 合并分支 四、常用快捷键 一、连接远程仓库 一、打开IDEA&#xff0c;进入目录&#xff1a;File ->New ->Project from…

PHP之Base64+php://filter绕过、disabled_function绕过

目录 一、Base64php://filter绕过 1.思路分析 2.实践验证 二、disabled_function绕过 一、Base64php://filter绕过 上课讲了这样一道题&#xff0c;一起来看下(以下代码适用于PHP7.x及以上&#xff0c;5的版本会报错) <?php function fun($var): bool{$blacklist …

STM32 中断复习

中断 打断CPU执行正常的程序&#xff0c;转而处理紧急程序&#xff0c;然后返回原暂停的程序继续运行&#xff0c;就叫中断。 在确定时间内对相应事件作出响应&#xff0c;如&#xff1a;温度监控&#xff08;定时器中断&#xff09;。故障处理&#xff0c;检测到故障&#x…

详细讲解什么是SpringMVC 映射请求数据

&#x1f600;前言 本文详细讲解什么是SpringMVC 映射请求数据 &#x1f3e0;个人主页&#xff1a;尘觉主页 &#x1f9d1;个人简介&#xff1a;大家好&#xff0c;我是尘觉&#xff0c;希望我的文章可以帮助到大家&#xff0c;您的满意是我的动力&#x1f609;&#x1f609; …

2023年03月 C/C++(二级)真题解析#中国电子学会#全国青少年软件编程等级考试

第1题:数字字符求和 请编写一个程序实现以下功能:从一个字符串中,提取出所有的数字字符即0-9,并作为数求和。 时间限制:1000 内存限制:65536 输入 一行字符串,长度不超过100,字符串中不含空格。 输出 字符串中所有数字字符作为数的和 样例输入 Lsd2f02k3ja3sdf223 样例…

辅助笔记-安装Ubantu虚拟机

安装Ubantu虚拟机 文章目录 安装Ubantu虚拟机步骤一&#xff1a;检查BIOS虚拟化支持步骤二&#xff1a;VMware17安装虚拟机步骤1&#xff1a;新建虚拟机步骤2&#xff1a;验证虚拟机能否上网 步骤3&#xff1a;设置Ubantu语言为中文 本文主要参考B站视频“P108_ 韩顺平Linux_ u…

测评类软文怎么写?教你几招

测评类种草软文&#xff0c;是当下非常热门的一种文章类型。这类文章以其独特的魅力&#xff0c;吸引着大量的用户&#xff0c;同时也让许多商家看到了商机。然而&#xff0c;如何写好一篇测评类种草软文&#xff0c;却是许多企业和品牌面临的难题。接下来伯乐网络传媒就给大家…

如何制作gif动图表情包?教你一键在线生成gif动图

使用gif表情的时候&#xff0c;经常发现市面上的表情包不太符合自己的需求&#xff0c;这时候我们可以动手制作自己的表情包&#xff0c;如何才能快速完成gif图片制作呢&#xff1f;今天就教大家一个不用下载安装任何软件的方法&#xff0c;使用专业的在线gif生成功能来制作gif…

代码随想录第24天|初步了解回溯三部曲

回溯是递归的副产品&#xff0c;只要有递归就会有回溯。 所以以下讲解中&#xff0c;回溯函数也就是递归函数&#xff0c;指的都是一个函数。 提到了回溯法的效率&#xff0c;回溯法其实就是暴力查找&#xff0c;并不是什么高效的算法。 最后我们讲到回溯法解决的问题都可以…

SIP网络音频模块-sip网络对讲音频模块(提供POE受电模块接口)

SIP网络音频模块-sip网络对讲音频模块&#xff08;提供POE受电模块接口&#xff09; SIP网络音频模块SV-2401V网络对讲音频模块&#xff08;支持POE&#xff09; SV-2403V网络对讲音频模块_网络语音对讲模块 网络音频模块 双向对讲 SIP广播系统 SIP网络音频模块嵌入式网络对…

花生十三 判断推理(四)定义判断、类比推理

定义判断 解题思路&#xff1a; 不是单纯的连连看&#xff0c;重在理解&#xff0c;可联系生活中的人或事或某种现象 题型特征&#xff1a;“被定义词” 解释 关键信息 “被定义词” &#xff1a;因名包含有重要特征特别关注&#xff1a;主体、对象、特殊要求、中心语 选…

真香!主数据管理系统,企业大哥必备神器

什么是主数据&#xff1f; 当一家连锁商超企业的市场营销部门想要策划一场线上线下营销活动&#xff0c;从而为消费者提供便捷的购物体验&#xff0c;就需要掌握商超会员的数据。 要想拥有这些数据就需掌握顾客的交易行为&#xff0c;掌握其购物过程行为&#xff0c;甚至情感…

Serverless 应用托管助力企业加速创新

作者&#xff1a;熊峰 云原生时代的 Serverless 应用托管架构 回顾过去十年&#xff0c;数字化转型将科技创新与商业元素不断融合、重构&#xff0c;重新定义了新业态下的增长极。商业正在从大工业时代的固化范式进化成面向创新型商业组织与新商业物种的崭新模式。随着数字化转…