当前位置: 首页 > news >正文

spring中bean的生命周期(简单5步)

目录

一、概念

1.生命是bean的生命周期?

2.知道bean生命周期的意义?

3.bean的生命周期按照粗略的五步

二、例子讲解


一、概念

1.生命是bean的生命周期?

答:spring其实就是管理bean对象的工厂,它负责对象的创建,对象的销毁。生命周期就是从创建到最终的销毁的整个过程。

2.知道bean生命周期的意义?

答:生命周期的本质:在哪个时间节点上面调用了哪个类的哪个方法。只有知道了时间的节点,才能知道我们的代码写到了哪里。可能需要在某一个特殊的时间节点上执行一段特定的代码,这段代码就可以放到这个时间节点上,当生命线走到这里,自然就会被调用。

3.bean的生命周期按照粗略的五步

第一步:实例化bean(调用无参数构造方法)

第二步:给bean属性赋值(调用set方法)

第三步:初始化bean(调用bean的init方法。这个init方法要自己写,自己配)

第四步:使用bean

第五步:销毁bean(调用bean的destroy方法。这个destroy方法要自己写,自己配)

二、例子讲解

看不懂本项目的可以参考这篇文章:快速入门使用spring详细步骤(介绍、导入依赖、第一个简单程序)_云边的快乐猫的博客-CSDN博客 或者

spring的注入(set注入、构造器注入)_云边的快乐猫的博客-CSDN博客

1.建立一个类(HelloBean)。编写无参构造方法(第一步)、创建属性并生成set方法(第二步)、编写int初始化方法(第三步)、销毁方法 (第四步) 

package com.spring6.demo2;public class HelloBean {//1.创建一个无参构造。快捷键生成:alt+insert(目的:为了更直观看bean加载的过程)public HelloBean() {System.out.println("第一步,无参构造方法被执行");}//2.创建一个属性值,并生成set方法给其赋值private String name;public void setName(String name) {System.out.println("第二步:给对象的属性赋值");this.name = name;}//3.这个init初始化方法需要自己写,自己配,方法名随意.public void initBean(){System.out.println("第三步:初始化bean");}//4.这个destroy销毁方法需要自己写,自己配,方法名随意public void destroyBean(){System.out.println("第五步:销毁bean");}
}

2.在spring工厂的xml文件里面编写bean标签。编写扫描管理类的方式注入属性编写扫描使用初始化和销毁方法(用于对这个类的管理)

ps:xml文件的创建方法:点击resources-->快捷键:alt+insert-->XML配置文件(倒4)--spring配置-->文件名称可以自定义

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:context="http://www.springframework.org/schema/context"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context.xsd"><!--6.1注解组件扫描:扫描指定的基本包以及其子包下的类,识别使用component的类--><bean id="HelloBean" class="com.spring6.demo2.HelloBean"init-method="initBean" destroy-method="destroyBean">        <!-- 6.2  指定初始化和销毁: init-method="initBean" destroy-method="destroyBean--><!--6.3给属性赋值  --><property name="name" value="李四"/></bean>
</beans>

3.编写一个测试类(TextBean),用来调用类(HelloBean)。里面编写从容器里面扫描指定的类的两行代码、调用类的代码、销毁bean的代码

4.运行结果 

如果此文章对你有帮助,请给点赞收藏评论吧! 

有什么问题欢迎评论区留言 

相关文章:

spring中bean的生命周期(简单5步)

目录 一、概念 1.生命是bean的生命周期&#xff1f; 2.知道bean生命周期的意义&#xff1f; 3.bean的生命周期按照粗略的五步 二、例子讲解 一、概念 1.生命是bean的生命周期&#xff1f; 答&#xff1a;spring其实就是管理bean对象的工厂&#xff0c;它负责对象的创建&…...

10 个最难理解的 Python 概念

文章目录技术提升面向对象编程 (OOP)装饰器生成器多线程异常处理正则表达式异步/等待函数式编程元编程网络编程大家好&#xff0c;与其他编程语言相比&#xff0c;Python 是一门相对简单的编程语言&#xff0c;如果你想真正学透这门语言&#xff0c;其实可能并不容易。 今天我…...

【linux】线程概念

概念 什么是线程 在一个程序里的一个执行路线就叫做线程&#xff08;thread&#xff09;。更准确的定义是&#xff1a;线程是“一个进程内部的控制序列” 一切进程至少都有一个执行线程&#xff0c;线程在进程内部运行&#xff0c;本质是在进程地址空间内运行 在Linux系统中&a…...

Leg转Goh引擎和架设单机+配置登陆器教程

教程准备1、Leg版本一个2、Goh引擎一套3、电脑一台(最好联网)前言&#xff1a;BLUE/LEGS/Gob/Goh/九龍、4K、AspM2第一步&#xff1a;更换引擎1、把版本自带的LEG引擎换成Goh引擎2、删除服务端里面的exe、dll文件(也可以直接更新)3、清理登录和游戏网关里面的配置文件4、更新引…...

idea整合svn

idea整合svn svn下载 链接&#xff1a;https://pan.baidu.com/s/1yS3R3lEE8lm9c9Ap-ndDKg 提取码&#xff1a;65ur 基础步骤 IDED中配置SVN没有svn.exe解决办法 以下是两种解决方案 需要卸载原 svn&#xff08;不推荐&#xff09; 参考网址&#xff1a; https://blog.csdn.…...

字节青训前端笔记 | 数据可视化基础

本课程主要内容可以分为三个章节&#xff1a; 数据可视化的基本概念可视化设计的基本原则面向前端的可视化工具 本手册可以作为学生学习数据可视化的“学习指南”&#xff0c;按照手册所列内容&#xff0c;结合扩展资料进行系统的学习和实践。本课程没有讨论更为前沿的可视化…...

ROS运行机C++程序,移动

流程&#xff1a; 1.创建工作空间 mkdir catkin_ws cd catkin_ws mkdir src cd src catkin_init_workspace 2编译工作空间 cd ~/catkin_ws/ catkin_make catkin_make install 首先对ROS进行创建一个元功能包 3.设置环境变量 source devel/setup.bash source devel/setup.b…...

C++中编译静态库与动态库

1.库的理解库就是写好的现有的&#xff0c;成熟的&#xff0c;可复用的代码。现实中每个程序都要依赖很多基础的底层库&#xff0c;不可能每个人的代码都从零开始&#xff0c;因此库的存在意义非同寻常。本质上来说库是一种可执行代码的二进制形式&#xff0c;是预编译代码的集…...

shell中sed命令用法

一、sed命令解析 1、sed工具概述 Stream EDitor&#xff0c;流式编辑器 - 非交互&#xff0c;基于模式匹配过滤及修改文本 - 逐行处理&#xff0c;并将结果输出到屏幕 - 可实现对文本的输出、删除、替换、复制、剪切、导入、导出等操作 2、命令格式解析 主要用法&#xff1a; …...

【VictoriaMetrics】VictoriaMetrics启停脚本

先看结果,启动VictoriaMetrics UI界面可访问...

高性能网络SIG月度动态:SMC 与 IBM 就扩展协议达成一致,virtio 支持 XDP 新特性

高性能网络 SIG&#xff08;Special Interest Group&#xff09; &#xff1a;在云计算时代&#xff0c;软硬件高速发展&#xff0c;云原生、微服务等新的应用形态兴起&#xff0c;让更多的数据在进程之间流动&#xff0c;而网络则成为了这些数据流的载体&#xff0c;在整个云时…...

【正点原子FPGA连载】第七章程序固化实验摘自【正点原子】DFZU2EG_4EV MPSoC之嵌入式Vitis开发指南

第七章程序固化实验 在前面的几个实验中&#xff0c;我们都是通过JTAG接口将FPGA配置文件和应用程序下载到MPSOC器件中。接下来我们将尝试把程序存储在非易失性存储器中&#xff0c;在上电或者复位时让程序自动运行&#xff0c;这个过程需要启动引导程序&#xff08;Boot Load…...

LeetCode-2335. 装满杯子需要的最短总时长【贪心,数学】

LeetCode-2335. 装满杯子需要的最短总时长【贪心&#xff0c;数学】题目描述&#xff1a;解题思路一&#xff1a;其实像一道数学题目。假设三个杯子x<y<z先分两种情况。第一种&#xff1a;xy<z&#xff0c;答案直接是最大的z。第二种&#xff1a;xy>z。先将x与y互相…...

基于 oss 框架的音频驱动

基于 oss 框架完成系统平台音频驱动的适配。 oss 框架可被多个平台应用&#xff0c;因此 oss 提供 OS 目录来存放平台文件&#xff08;比如&#xff1a;linux.c&#xff09;&#xff0c;该文件主要提供平台对 oss 框架封装后的相关接口。 以 Linux 为例&#xff0c;入口接口为…...

【golang】如何定制化zap日志库以及如何使用

Zap 日志 前言 本文主要介绍Go语言日志库如何简易定制化&#xff0c;以及如何在开发中使用。 为什么需要日志? 一个产品的诞生一定是因为有需求&#xff01;新技术大部分都是为了更加便利和实用而诞生的&#xff0c;日志也不例外。日志顾名思义就是对整个项目的事件进行记…...

如何将 Ubuntu 升级到 22.04 LTS Jammy Jellyfish

在本教程中,我们将详细介绍如何将你的 Ubuntu 系统升级到版本 22.04 Jammy Jellyfish,这是最新的长期支持版本。 Ubuntu 22.04 LTS Jammy Jellyfish 将于 2022 年 4 月 21 日发布。它是下个两年一次的长期支持(LTS)版本,因此值得注意,而且现在 Ubuntu 21.10 的用户可以升…...

ubuntu20.04安装docker与docker-compose

安装docker 查看系统发行版本 cat /proc/version1、更新apt包 sudo apt-get update2、安装必备的软件包以允许apt通过 HTTPS 使用存储库&#xff08;repository&#xff09;&#xff1a; sudo apt-get install ca-certificates curl gnupg lsb-release3、添加Docker官方版本…...

笔试题-2023-加特兰-数字IC设计【纯净题目版】

回到首页:2023 数字IC设计秋招复盘——数十家公司笔试题、面试实录 推荐内容:数字IC设计学习比较实用的资料推荐 题目背景 笔试时间:2022.07.27应聘岗位:数字电路设计工程师(SoC) - 2023届笔试时长:90min笔试平台:nowcoder牛客网题目类型:问答题(11道)主观评价 难易…...

动态内存管理

目录1.为什么要动态内存分配2.动态内存函数malloc](https://cplusplus.com/reference/cstdlib/malloc/?kwmalloc)和[freecallocrealloc3.使用动态内存要注意的几点对NULL的解引用对同一块动态内存多次释放free非动态开辟的内存使用free释放一块动态开辟内存的一部分一个函数中…...

Unsupervised Question Answering 简单综述

Unsupervised Question Answering by Cloze Translation, ACL 2019 随机从文本中抽取noun phrases或者named entity作为答案将答案部分mask掉&#xff0c;生成cloze question利用无监督翻译&#xff0c;将cloze question转化为natural question 缺点&#xff1a; 直接利用原句…...

【kafka】Golang实现分布式Masscan任务调度系统

要求&#xff1a; 输出两个程序&#xff0c;一个命令行程序&#xff08;命令行参数用flag&#xff09;和一个服务端程序。 命令行程序支持通过命令行参数配置下发IP或IP段、端口、扫描带宽&#xff0c;然后将消息推送到kafka里面。 服务端程序&#xff1a; 从kafka消费者接收…...

LeetCode - 394. 字符串解码

题目 394. 字符串解码 - 力扣&#xff08;LeetCode&#xff09; 思路 使用两个栈&#xff1a;一个存储重复次数&#xff0c;一个存储字符串 遍历输入字符串&#xff1a; 数字处理&#xff1a;遇到数字时&#xff0c;累积计算重复次数左括号处理&#xff1a;保存当前状态&a…...

pam_env.so模块配置解析

在PAM&#xff08;Pluggable Authentication Modules&#xff09;配置中&#xff0c; /etc/pam.d/su 文件相关配置含义如下&#xff1a; 配置解析 auth required pam_env.so1. 字段分解 字段值说明模块类型auth认证类模块&#xff0c;负责验证用户身份&am…...

OkHttp 中实现断点续传 demo

在 OkHttp 中实现断点续传主要通过以下步骤完成&#xff0c;核心是利用 HTTP 协议的 Range 请求头指定下载范围&#xff1a; 实现原理 Range 请求头&#xff1a;向服务器请求文件的特定字节范围&#xff08;如 Range: bytes1024-&#xff09; 本地文件记录&#xff1a;保存已…...

视频字幕质量评估的大规模细粒度基准

大家读完觉得有帮助记得关注和点赞&#xff01;&#xff01;&#xff01; 摘要 视频字幕在文本到视频生成任务中起着至关重要的作用&#xff0c;因为它们的质量直接影响所生成视频的语义连贯性和视觉保真度。尽管大型视觉-语言模型&#xff08;VLMs&#xff09;在字幕生成方面…...

第一篇:Agent2Agent (A2A) 协议——协作式人工智能的黎明

AI 领域的快速发展正在催生一个新时代&#xff0c;智能代理&#xff08;agents&#xff09;不再是孤立的个体&#xff0c;而是能够像一个数字团队一样协作。然而&#xff0c;当前 AI 生态系统的碎片化阻碍了这一愿景的实现&#xff0c;导致了“AI 巴别塔问题”——不同代理之间…...

拉力测试cuda pytorch 把 4070显卡拉满

import torch import timedef stress_test_gpu(matrix_size16384, duration300):"""对GPU进行压力测试&#xff0c;通过持续的矩阵乘法来最大化GPU利用率参数:matrix_size: 矩阵维度大小&#xff0c;增大可提高计算复杂度duration: 测试持续时间&#xff08;秒&…...

实现弹窗随键盘上移居中

实现弹窗随键盘上移的核心思路 在Android中&#xff0c;可以通过监听键盘的显示和隐藏事件&#xff0c;动态调整弹窗的位置。关键点在于获取键盘高度&#xff0c;并计算剩余屏幕空间以重新定位弹窗。 // 在Activity或Fragment中设置键盘监听 val rootView findViewById<V…...

C++ Visual Studio 2017厂商给的源码没有.sln文件 易兆微芯片下载工具加开机动画下载。

1.先用Visual Studio 2017打开Yichip YC31xx loader.vcxproj&#xff0c;再用Visual Studio 2022打开。再保侟就有.sln文件了。 易兆微芯片下载工具加开机动画下载 ExtraDownloadFile1Info.\logo.bin|0|0|10D2000|0 MFC应用兼容CMD 在BOOL CYichipYC31xxloaderDlg::OnIni…...

让回归模型不再被异常值“带跑偏“,MSE和Cauchy损失函数在噪声数据环境下的实战对比

在机器学习的回归分析中&#xff0c;损失函数的选择对模型性能具有决定性影响。均方误差&#xff08;MSE&#xff09;作为经典的损失函数&#xff0c;在处理干净数据时表现优异&#xff0c;但在面对包含异常值的噪声数据时&#xff0c;其对大误差的二次惩罚机制往往导致模型参数…...