【Java】Bean的生命周期——print大法带你了解Bean的生命周期(初探)

news/2025/10/31 11:20:29/文章来源:https://www.cnblogs.com/haof31/p/19179242

今天面试被问到Bean的生命周期,我就巴拉巴拉说了5个步骤,最后反问阶段面试官说不够详细。今天就来实战梳理一下!

一、定义一个Student类

为了方便看到生命周期过程,我直接使用print大法;
另外,将类交给Spring容器管理可以通过xml文件形式和注解形式,接下来我都实现一下

1、xml形式

package com.goahead.bean;public class Student1 {private String name;public Student1() {System.out.println("1、实例化");}public Student1(String name) {this.name = name;}public void setName(String name) {System.out.println("2、依赖注入");this.name = name;}public void myInit() {System.out.println("3、初始化");}public void myDestroy() {System.out.println("5、销毁");}
}

2、注解形式

package com.goahead.bean;import org.springframework.stereotype.Component;
import org.springframework.beans.factory.annotation.Value;
import javax.annotation.PostConstruct;
import javax.annotation.PreDestroy;@Component
public class Student2 {private String name;public Student2() {System.out.println("1、实例化");}public Student2(String name) {this.name = name;}@Value("goahead")public void setName(String name) {System.out.println("2、依赖注入");this.name = name;}@PostConstructpublic void myInit() {System.out.println("3、初始化");}@PreDestroypublic void myDestroy() {System.out.println("5、销毁");}
}

二、将Student类交给Spring容器

1、xml文件形式

需要在resource文件夹下定义一个xml文件

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans.xsd"><bean id="student" class="com.goahead.bean.Student" init-method="myInit" destroy-method="myDestroy"><property name="name" value="goahead"/></bean>
</beans>

2、注解形式(推荐)

注解形式我们只需在Student2类上加相应的注解,然后加一个配置类

在config目录下创建一个 AppConfig

package com.goahead.config;import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;@Configuration
@ComponentScan("com.goahead.bean")  // 扫描包路径
public class AppConfig {
}

三、测试

由于我们第二步实现了两种方式,所以测试也对应两种方式

1、对应xml形式

import com.goahead.bean.Student1;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;public class AppTest1 {@Testpublic void test1() {ApplicationContext context = new ClassPathXmlApplicationContext("spring.xml");Student1 student1 = context.getBean(Student1.class);System.out.println("4、使用Bean");((ClassPathXmlApplicationContext)context).close();}
}

2、注解形式

import com.goahead.bean.Student2;
import com.goahead.config.AppConfig;
import org.junit.Test;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;public class AppTest2 {@Testpublic void test2() {// 使用AnnotationConfigApplicationContext替代ClassPathXmlApplicationContextAnnotationConfigApplicationContext context =new AnnotationConfigApplicationContext(AppConfig.class);Student2 student = context.getBean(Student2.class);System.out.println("4、使用Bean");context.close();  // 触发销毁方法}
}

四、测试结果

1、xml形式

image

2、注解形式

image

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

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

相关文章

基于containerd部署的k8s集群

关闭防火墙、selinux、关闭交换分区、配置hosts网上教程很多,就不一一描述,可自行网上查找。 主机清单系统K8S集群角色服务器主机名CentOS7.9 Master192.168.71.138masterCentOS7.9 Node1192.168.71.139node1CentOS7…

中国大陆Wi-Fi信道

中国大陆 Wi-Fi 信道 先总结一下,目前 WLAN 协议繁多甚至有点混乱,加之各国法规不同限制不同,甚至有些协议专为国家定制(例如802.11j), 导致很多频段使用并不是很明朗,目前中国大陆能够明确可以正常使用的 Wi-F…

AE脚本-MoBar v3.5.1 Win 可提高效率的AE快捷命令脚本工具箱

** 脚本简介** MoBar 是一个节省时间的工具集合,可帮助您在Adob​​e After Effects中快速轻松地创建项目。没有必要在工具之间徘徊,也不必担心事情会花费你多长时间。它旨在让您比以往更快、更高效地工作。 MoBar 配…

“数据筑基” 赋能 “人工智能+”:解构“十五五”新质生产力的核心路径

“十五五”规划建议的发布,不仅是未来五年的施政纲领,更是一份关乎中国经济“形态”与“质态”的深度诊断。当我们穿透“现代化产业体系”、“数字中国”等宏观布局,会发现一条贯穿始终的暗线:“新质生产力的全面唤…

详细介绍:Win11系统JAVA8与IDEA社区版下载安装与配置

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

2025 年最新推荐!搬家公司推荐排行榜 ,覆盖玄武秦淮等区域专业搬家公司精选榜单南京搬家公司推荐

引言 在南京,搬家需求逐年增长,但消费者在选择搬家公司时却屡屡碰壁。不少公司报价模糊,隐形消费层出不穷,让消费者额外花费冤枉钱;部分公司响应迟缓,预约后迟迟不上门,打乱客户搬家计划;还有些公司服务不专业…

Golang 镜像拉取与 Docker 部署全教程

Golang(简称 Go)是 Google 开发的静态类型编程语言,语法上借鉴了 C 语言的简洁性,但弥补了 C 语言的诸多痛点,比如自带垃圾回收(不用手动管理内存)、强类型安全(减少运行时错误)、原生支持并发(轻松处理高并…

2025年推拉棚供应商年度排名,推拉棚源头厂家/推拉棚制造商推荐

在当今各类户外场景应用中,如物流仓储、商业经营、市政设施等,推拉棚以其灵活便捷的特性,已成为不可或缺的户外设施。然而,市场上推拉棚制造商众多,质量与服务参差不齐。企业和个人在选择时,常面临产品耐用性不佳…

解析2025强网拟态EZMiniAPP

解析2025强网拟态EZMiniAPP微信小程序逆向分析与加密算法破解 一、题目背景与初步分析 1.1 题目描述 本题是一道Mobile类别的CTF挑战题,题目提供了一个文件:__APP__.wxapkg。 1.2 什么是wxapkg文件 .wxapkg是微信小程…

2025 年 10 月 UV 测量仪器/UV LED 配套设备/UV 光固化胶厂家推荐排行榜:专业选型指南与高效应用方案

2025 年 10 月 UV 测量仪器/UV LED 配套设备/UV 光固化胶厂家推荐排行榜:专业选型指南与高效应用方案 随着工业制造技术向精密化、智能化方向发展,紫外光技术应用领域持续扩大。在电子半导体、医疗设备、汽车制造等高…

2025年新疆电线电缆厂家权威推荐榜单:特种电缆/矿用电缆/电力电缆源头厂家精选

随着西部大开发和新能源产业建设的持续推进,新疆电线电缆市场需求呈现稳定增长态势。行业数据显示,2024年西北地区电线电缆市场规模已突破380亿元,其中新疆地区占比达35%,年均增长率保持在12%-15%。电线电缆技术重…

为什么顶级企业愿意为设计买单?

为什么顶级企业愿意为设计买单?在大众认知中,设计常被等同于 “视觉美化”,但劳斯莱斯、国际私人银行、高端医疗集团等顶级企业,愿意为设计支付数倍于普通方案的成本,核心并非追求 “好看”—— 而是因为设计对它…

sg.后台线程-1亿浮点运算用时-方法2

import PySimpleGUI as sg import math import time import threading # 改用标准库的 threading.Eventdef calculate_sqrt_sum(window, stop_event):"""后台计算函数"""total = 10_00…

2025 年混合机厂家最新推荐排行榜:高效盘条式无重力犁刀式锥形卧式螺带连续式等机型优选企业测评结果及核心优势解析

引言 为助力企业精准选购混合机设备,粉体设备行业协会联合专业测评机构开展 2025 年混合机品牌测评工作。本次测评覆盖全国 68 家主流混合机生产企业,采用 “技术实力 + 产品性能 + 服务质量 + 市场口碑” 四维评分体…

note 2

在《程序员修炼之道》“注重实效的途径” 章节中,DRY 原则(Dont Repeat Yourself)和正交性原则,为构建灵活可维护的系统提供了关键方法论。DRY 原则强调 “系统中的每一项知识都必须具有单一、无歧义、权威的表示”…

基于机载相控阵天线的卫星通信链路预算示例:(一) - 实践

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

2025年上海继承律师权威推荐榜单:离婚房产律所/离婚律所/继承律所精选服务商

随着上海家庭财富积累和人口老龄化程度加深,遗产继承案件呈现逐年上升趋势。据上海市法院系统统计,2024年继承纠纷一审案件数量较上年增长12.7%,其中涉及房产分割的继承案件占比高达68%。 在复杂的继承法律案件中,…

基于MATLAB的MFCC特征与高斯混合模型(GMM)语音识别系统

一、系统设计 1. 核心流程 graph TDA[语音采集] --> B[预处理]B --> C[MFCC特征提取]C --> D[GMM模型训练]D --> E[分类识别]B -->|预加重| B1[高通滤波]B -->|分帧加窗| B2[汉明窗]C -->|Mel滤波…

安装Helm

安装包地址:https://get.helm.sh/helm-v3.16.0-linux-amd64.tar.gz 将安装包上传至服务器解压 tar -xf helm-v3.16.0-linux-amd64.tar.gz cd linux-amd64将helm移到/usr/local/bin/目录 mv helm /usr/local/bin/执行h…

vdi镜像转换vmdk虚拟磁盘文件

qemu-img.exe convert -p -f vdi -O vmdk XXXXX.vdi XXXXXX.vmdk -p:表示镜像转换的进度。 -f:后面为源镜像格式 -O:(必须是大写)后面的参数由如下3个部分组成:转换出来的镜像格式 + 源镜像文件名称 + 目标文件…