建设快卡额度查询网站海阳玖网站建设

news/2025/9/24 7:08:07/文章来源:
建设快卡额度查询网站,海阳玖网站建设,网站服务器配置,wordpress可以做下载站目录 一.Bean生命周期的简介 1.基本概念 2.Spring生命周期的几大阶段 3.注意点及小结 4.生活案例 5.Spring容器管理JavaBean的初始化过程 二. Bean的单例选择与多例选择 1.单例选择与多例选择的优缺点 1.1单例模式的优点#xff1a; 1.2单例模式的缺点#xff1a; 1…目录 一.Bean生命周期的简介 1.基本概念 2.Spring生命周期的几大阶段 3.注意点及小结 4.生活案例 5.Spring容器管理JavaBean的初始化过程 二. Bean的单例选择与多例选择 1.单例选择与多例选择的优缺点 1.1单例模式的优点 1.2单例模式的缺点 1.3多例模式的优点 1.4多例模式的缺点 1.5 小结 2.案例演示单例模式与多例模式 1.演示在单例模式和多例模式下资源变量是否被污染 2. 判断单例模式和多例模式的初始化 3.单例模式和多例模式的适用场景 一.Bean生命周期的简介 1.基本概念 Bean生命周期指的是Bean在容器中创建、初始化、使用和销毁的过程。Spring的IoC容器负责管理Bean的生命周期确保它们按照预期的方式被创建和销毁 2.Spring生命周期的几大阶段 实例化在容器启动时Spring根据配置文件或注解等方式创建Bean的实例。这个阶段是通过调用Bean的构造函数完成的。 属性注入在实例化后Spring会通过各种方式例如XML配置、注解、Java代码等将Bean所需的属性值注入到Bean中。可以使用Autowired和Value等注解来实现依赖注入。 初始化回调方法在Bean的所有属性被注入之后Spring会调用Bean的初始化回调方法。常见的初始化回调方法是实现InitializingBean接口的afterPropertiesSet方法或使用PostConstruct注解。 自定义初始化方法除了使用初始化回调接口和注解外开发人员还可以在Bean中定义自己的初始化方法。可以通过在Bean的方法上使用Bean(initMethod customInit)注解来指定自定义的初始化方法。 使用Bean在初始化后Bean可以被容器和其他Bean使用。可以在其他Bean中使用依赖注入来获取到已经初始化的Bean。 销毁回调方法当容器关闭时或者通过编程方式销毁Bean时Spring会调用Bean的销毁回调方法。常见的销毁回调方法是实现DisposableBean接口的destroy方法或使用PreDestroy注解。 自定义销毁方法类似于初始化方法开发人员可以在Bean中定义自己的销毁方法。可以通过在Bean的方法上使用Bean(destroyMethod customDestroy)注解来指定自定义的销毁方法。 3.注意点及小结 当使用Java配置如Configuration时Bean的生命周期管理通常使用方法级别的Bean注解而不是XML配置中的bean元素。 总结起来Spring Bean的生命周期包括实例化、属性注入、初始化回调方法、自定义初始化方法、使用Bean、销毁回调方法和自定义销毁方法。Spring提供了多种方式来管理Bean的生命周期开发人员可以根据需要选择适合自己的方式 4.生活案例 假设我们以一个人的生命周期作为生活实例来比喻Spring Bean的生命周期。 实例化当一个人出生时就相当于Bean在容器中被实例化的过程。一个新生婴儿就是一个新的实例具有独立的身份。 属性注入随着时间的推移这个人会经历各种学习和成长的过程就像Bean在属性注入阶段接收到不同的属性值。例如这个人会接受教育、学习技能、掌握知识这些都是人生中注入的属性。 初始化回调方法当这个人成年后可能会选择一个职业或自己的事业就像Bean在初始化回调方法阶段定义自己的职责和目标。这个人会明确自己的使命并准备好开始工作。 自定义初始化方法在人生的旅程中这个人会发展自己的兴趣爱好、价值观和生活方式就像Bean可以定义自己的初始化方法。这些方法可以帮助这个人构建自己的身份并适应不同的环境。 使用完成初始化后这个人会活跃在社会中与其他人交流、工作、合作就像Bean在容器中被其他组件或应用程序使用。 销毁回调方法当一个人的生命接近尾声或者出现一些变故时他们开始为离开做准备。就像Bean的销毁回调方法一样这个人可能会处理他们的后事与亲人和朋友告别做好最后的安排。 自定义销毁方法在离开之前这个人可以进行一些必要的准备如写遗嘱、处理财务等就像Bean可以定义自己的销毁方法来处理必要的清理工作。 通过这个比喻我们可以将Spring Bean的生命周期与一个人的生命周期进行对比从而更好地理解Bean在容器中的创建、初始化、使用和销毁的过程。    Bean的生命周期就像我们的一生人的终点是死亡Bean的生命周期也一样终点都是一样的重要的是过程所以这里也希望大家能够热爱生活 5.Spring容器管理JavaBean的初始化过程 1.xml/annotation/configuation 配置Javabean 2.BeanDefinitionReader解析配置的JavaBean得到BeanDefinition,最终得到ListBeanDefinition集合 3.触发BeanFactoryPostProcessor在Javabean初始化之前执行自己的业务 4.spring中beanFactory,会通过ListBeanDefinition集合遍历初始化所有的Javabean对象 5.如果自己的JavaBean需要调动Spring上下文中的资源那么需要实现*aware感知接口 6.如果自己的JavaBean已经初始化好了还需扩展功能那么需要借助BeanPostProcessor来实现 二. Bean的单例选择与多例选择 默认状态下Bean的配置的单例的当然也可以选择去配置多例的 1.单例选择与多例选择的优缺点 1.1单例模式的优点 资源利用单例模式在应用程序启动时创建一个实例并一直重用该实例减少了对象创建和销毁的开销可以有效利用系统资源。全局性单例模式可以在整个应用程序中共享数据确保数据的一致性和可靠性。状态共享由于单例只有一个实例可以方便地在不同的组件之间共享状态简化了组件之间的通信和数据传递。线程安全单例模式天生具有线程安全的特性因为只有一个实例在操作避免了并发访问的问题。 1.2单例模式的缺点 资源持有单例模式的实例会一直存在于内存中占用一定的系统资源在某些情况下可能会导致资源浪费。生命周期管理单例模式的实例生命周期长无法自动释放资源需要手动管理对象状态和清理资源。难以模拟测试由于单例模式的全局性和状态共享的特性对于单元测试和模拟测试来说可能会更加困难因为需要考虑到全局状态的影响。 1.3多例模式的优点 灵活性多例模式可以根据需要创建多个实例每个实例之间相互独立并具有自己的状态可以更灵活地应对不同的需求。隔离性多例模式的实例相互独立不共享状态可以避免状态污染和互相干扰的问题。生命周期管理每个多例实例的生命周期由Spring容器管理可以自动释放资源减少内存泄漏的风险。更易于测试多例模式的实例相互独立可以更容易地进行单元测试和模拟测试测试之间不会相互影响。 1.4多例模式的缺点 资源占用多例模式创建了多个实例会占用更多的内存和系统资源。对象管理复杂多个实例需要由开发者自己管理和控制需要注意实例的创建、销毁和状态管理增加了设计和开发的复杂性。线程安全多例模式的实例在并发环境下需要额外考虑线程安全的问题确保实例之间的数据不会冲突。 1.5 小结 单例模式适用于需要全局共享和状态共享的情况能够提高资源利用和数据一致性但需要注意资源管理和生命周期的维护。而多例模式适用于需要灵活性和隔离性的情况能够减少资源占用和相互影响但需要开发者自行管理和控制实例的创建和状态。选择单例还是多例取决于具体的业务需求和系统设计的考虑。 2.案例演示单例模式与多例模式 1.演示在单例模式和多例模式下资源变量是否被污染 1.准备好资源 package com.YU.beanlife;import java.util.List;import com.YU.ioc.service.UserService; import com.YU.ioc.service.impl.UserServiceImpl1; import com.YU.ioc.service.impl.UserServiceImpl2;public class ParamAction {private int age;private String name;private ListString hobby;private int num 1;// private UserBiz userBiz new UserBizImpl1();public ParamAction() {super();}public ParamAction(int age, String name, ListString 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);System.out.println(this.name);System.out.println(this.age);System.out.println(this.hobby);} } 2.准备好Bean工厂 package com.YU.beanlife;public class InstanceFactory {public void init() {System.out.println(初始化方法);}public void destroy() {System.out.println(销毁方法);}public void service() {System.out.println(业务方法);} } 3.配置xml中的bean目录 !--spring的生命周期--bean classcom.YU.beanlife.ParamAction idparamActionconstructor-arg namename value死仔/constructor-argconstructor-arg nameage value21/constructor-argconstructor-arg namehobbylistvalue抽烟/valuevalue打go/valuevalue烫头/value/list/constructor-arg/beanbean idinstanceFactory classcom.YU.beanlife.InstanceFactoryscopeprototype init-methodinit destroy-methoddestroy/bean 4.编写测试程序 package com.YU.beanlife;import org.junit.Test; import org.springframework.beans.factory.BeanFactory; import org.springframework.beans.factory.xml.XmlBeanFactory; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; import org.springframework.core.io.ClassPathResource; import org.springframework.core.io.Resource;/** spring bean的生命週期* spring bean的單例多例*/ public class Demo2 {// 体现单例与多例的区别Testpublic void test1() {ClassPathXmlApplicationContext applicationContext new ClassPathXmlApplicationContext(/spring-context.xml); // ApplicationContext applicationContext new ClassPathXmlApplicationContext(/spring-context.xml);ParamAction p1 (ParamAction) applicationContext.getBean(paramAction);ParamAction p2 (ParamAction) applicationContext.getBean(paramAction);// System.out.println(p1p2);p1.execute();p2.execute();// 单例时容器销毁instanceFactory对象也销毁多例时容器销毁对象不一定销毁applicationContext.close();}// 体现单例与多例的初始化的时间点 instanceFactoryTestpublic void test2() {ApplicationContext applicationContext new ClassPathXmlApplicationContext(/spring-context.xml);InstanceFactory instanceFactory (InstanceFactory) applicationContext.getBean(instanceFactory);}// BeanFactory会初始化bean对象但会根据不同的实现子类采取不同的初始化方式// 默认情况下bean的初始化单例模式立马会执行但是此时XmlBeanFactory作为子类单例模式下容器创建bean依赖没有初始化只有要获取使用bean对象才进行初始化Testpublic void test3() {// ClassPathXmlApplicationContext applicationContext new// ClassPathXmlApplicationContext(/spring-context.xml);Resource resource new ClassPathResource(/spring-context.xml);BeanFactory beanFactory new XmlBeanFactory(resource); // InstanceFactory i1 (InstanceFactory) beanFactory.getBean(instanceFactory);}}其中Test1测试结果为 由于我们默认使用的是单例模式所以在运行时出现了变量污染num值变为2  当我们配置多例模式同样运行Test1时 scopeprototype 运行结果 由此可得知我们的变量没有被污染  2. 判断单例模式和多例模式的初始化 配置和上面是一样的 1.当我们运行Test2时测试JavaBean是否跟着初始化 单例模式运行结果 由单例模式可以看出发生了初始化  多例模式运行结果 由此得知并没有出现初始化 当我们用多例模式运行Test3时 运行结果 看到红框中的代码当我们的JavaBean时才会初始化 小结 由三次运行结果我们可以得出 1.单例模式中的JavaBean是跟着Spring上下文初始化的容器生成对象跟着生成容器死亡对象死亡 2.多例模式走的Javabean是使用时才会创建销毁要跟着Jvm走 3.单例模式和多例模式的适用场景 单例模式和多例模式在不同的场景下具有不同的适用性。以下是它们常见的适用场景 适用于单例模式的场景 资源共享当需要在应用程序的多个组件之间共享同一份资源或数据时单例模式可以确保全局范围内的数据一致性。工厂类当需要创建一个全局工厂类来统一管理对象的创建和生命周期时单例模式可以确保该工厂类始终只有一个实例。配置信息当需要在应用程序中加载一份全局的配置信息并且多个组件需要共享该配置信息时单例模式可以确保配置信息的一致性和高效访问。日志记录器当需要在整个应用程序中使用同一个日志记录器来记录日志时单例模式可以确保日志的一致性和集中管理。 适用于多例模式的场景 并发请求处理当需要在多线程或并发环境下处理请求并且每个请求使用独立的实例来保证状态隔离时多例模式可以为每个请求创建一个独立的对象。对象池当需要管理一组可复用的对象并且对象在不同的时刻需要创建和销毁时多例模式可以提供对象池来管理对象的生命周期以减少创建和销毁的开销。状态管理当对象的状态需要在不同的上下文环境中独立维护和处理时多例模式可以为每个上下文环境创建一个独立的实例以避免状态冲突和相互干扰。服务提供者当系统需要支持多个相同类型的服务提供者并且每个服务提供者需要独立的实例时多例模式可以满足服务提供者的创建和管理需求。 注意 单例模式在一些场景下可能存在共享资源竞争、线程安全等问题需要谨慎设计和考虑并发访问的情况。多例模式在一些场景下可能会增加资源消耗和对象管理的复杂性需要权衡资源利用和代码复杂度之间的平衡。在实际应用中根据具体的业务需求和系统设计要求来选择单例模式或多例模式。 很感谢各位大佬的观看点个关注不迷路大家的点赞和收藏是博主最大的创作动力谢谢啦

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

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

相关文章

郑州制作个人网站html网站设计范例

分布式锁核心知识介绍和注意事项 基于Redis实现分布式锁的几种坑 综合伪代码: 运行:

沈阳市营商环境建设监督局网站昆明做网站优化

最近,机器学习岗位越来越火爆,那么自然对算法的一些能力要求也是越来越高,想要在求职者中脱颖而出,起步自然非常重要。 我和小伙伴们一起研讨了 2019 年校招的一些算法面试,有些是亲自经历的,也有伙伴分享的…

qq同步wordpress分类目录网站大全做seo

考试题型: 不定项选择题 10 道 , 填空题 10 道 , 问答题 2 道 , 编程题 4 道 目录 不定项选择题 10 道填空题 10 道问答题 2 道编程题 4 道 不定项选择题 10 道 在TCP协议中,发送方的窗口大小是由两个关键因素共同决定…

网站建设前的市场分析怎么写wordpress博客金融模板

核心 欧拉角描述的是一种变换,只关注变换后的结果,不关注变换过程中的运动 而四元数不仅良好地表示了一种变换,也很好地表示了一种运动过程,又避免了万向节死锁Gimbal Lock变换顺序,是欧拉角变换的一部分,…

量子机器学习入门:三种数据编码方法对比与应用

在传统机器学习中数据编码确实相对直观:独热编码处理类别变量,标准化调整数值范围,然后直接输入模型训练。整个过程更像是数据清洗,而非核心算法组件。 量子机器学习的编码完全是另一回事。 传统算法可以直接消化特…

深度学习调参新思路:Hyperband早停机制提升搜索效率

Hyperband是机器学习中一个相当实用的超参数调优算法,核心思路是用逐次减半来分配计算资源。说白了就是让一堆配置先跑几轮,表现差的直接踢掉,剩下的继续训练更多轮次。 这个方法的巧妙之处在于平衡了探索和利用。你…

解决推理能力瓶颈,用因果推理提升LLM智能决策

从ChatGPT到现在的智能体AI这个跨越说明了一个关键转变。ChatGPT本质上是个聊天机器人,生成文本回应;而AI智能体能够自主完成复杂任务——销售、旅行规划、航班预订、找装修师傅、点外卖,这些都在它的能力范围内。 …

昆明市网站制作公司网站一般多少钱一年

摘要: 准备工作 开通阿里云直播服务:阿里云直播服务接收直播流,并提供直播播放地址,完成一场直播需要先开通阿里云直播服务,在 直播官网详情页 中单击 立即开通 ,开通阿里云直播服务。 如您已经能够使用阿里…

做個app网站价格做舞美的好素材网站j

目录 一、目标二、计划三、完成情况1.宏观思维导图2.过程中的团队管理和其它方面的思考 四、意外之喜(最少2点)1.计划内的明确认知和思想的提升标志2.计划外的具体事情提升内容和标志 一、目标 通过参加考试,训练学习能力,而非单纯以拿证为目的。 1.在复…

网站建设中 windows运动网页设计

导出建库表索引等: [rootlnpg ~]# mysqldump -ugistar -pxxx -h192.168.207.143 --no-data -d lndb > lndb20230223-1.sql 只导出索引:参考:MYSQL导出现有库中的索引脚本_mysql 导出数据库所有表的主键和索引-CSDN博客 -- MYSQL导出现有…

高端手机网站 制作公司微信公众平台登录入口官网

Go基础之锁的初识 当我们的程序就一个线程的时候是不需要用到锁的,但是通常我们实际的代码不会是单个线程的,所有这个时候就需要用到锁了,那么关于锁的使用场景主要涉及到哪些呢? 当我们多个线程在读相同的数据的时候则是需要加锁…

自己做一元夺宝网站车之家汽车报价2022官网

Koa 和 Express 都会使用到中间件 Express的中间件是顺序执行,从第一个中间件执行到最后一个中间件,发出响应如上图 Koa是从第一个中间件开始执行,遇到 next 进入下一个中间件,一直执行到最后一个中间件,在逆序&#x…

如何做地方门户网站默认网站停止

👽发现宝藏 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。【点击进入巨牛的人工智能学习网站】。 从零开始学习数据结构与算法:Python实现 数据结构与算法是计算机科学中至关重要…

中国空间站距离地面多少公里中英文网站设计

1、将变量名作为实参和形参: 这时传给形参的是变量的值,传递是单向的。如果在执行函数期间形参的值发生变化,并不传回实参。应为在调用函数时,形参和实参不是同一个存储单元。 2、传递变量的指针: 形参是指针变量&a…

网站建设优化外包域名备案与网站不一致

位图缓存是专用RAM缓冲区,应用可将位图保存(或缓存)在其中。 如果缓存了位图,在绘制位图时,TouchGFX将自动使用RAM缓存作为像素来源。位图缓存在许多情况下十分有用。 从RAM读取数据通常比从闪存读取要快(特…

北京好网站制作公司哪家好网站排序

元旦准备买NDS,顺带关注了下PSP,其实是想,或许买PSP也不错~PSP很像一个平台,提供了很多东西,譬如官方的PS模拟器~在上面编程也是个不错的想法。国外的一个网站提供了很多信息,PS2Dev Network (http://www.p…

石家庄学做网站建设培训学校企业网站管理系统手机版教程

A.Wrong Answer(模拟) 题意: 给你两个整数 A A A和 B B B,它们介于 0 0 0和 9 9 9之间。 输出任何一个介于 0 0 0和 9 9 9之间且不等于 A B AB AB的整数。 分析: 按题意判断并输出一个整数即可。 代码&#xff…

建设银行网站服务功能网站制作的流程包括

在计算机视觉中,特别是在相机标定和立体视觉领域,内参(intrinsic parameters)和外参(extrinsic parameters)是非常重要的概念。它们与相机的几何属性和姿态有关。 内参(Intrinsic Parameters&am…

宝安区建设工程交易服务中心做网站优化的弊端

目录 一、本节介绍 1 上集回顾 2 本节介绍 二、原理分析 1 现实中出现彩色的原因 2 软件里的彩色的原理 3 方案 三、 实现数字由【-1,1】映射为【0,1】 1 结论 2 原理 四、代码实现 1 注意事项 2 详解结构体appdata_base 3 接收数据 4 映射数据 5 输出给SV_TAR…

天津市网站建设公司wordpress在哪里注册

1 事件概述 CAPL是一种面向过程、由事件驱动的类C语言。 事件驱动针对于顺序执行,其区别如下: 顺序执行:顺序执行流程中,子例程或过程函数按照代码编写顺序逐句执行。 事件驱动:CAPL程序由事件驱动,工程…