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

Spring的bean的生命周期

文章目录

    • 概要
    • 代码演示
      • 结果

概要

在 Spring 框架中,bean 的生命周期包括从创建到销毁的整个过程。了解 bean 的生命周期有助于更好地管理 bean 的状态和依赖。下图是 Spring bean 生命周期的过程
在这里插入图片描述

代码演示

SpringConfig

@Configuration
@ComponentScan("com.example.hac.test")
public class SpringConfig {}

MyBeanPostProcessor
BeanPostProcessor 允许在 Spring 容器初始化 bean 之前和之后进行自定义处理(自定义一些逻辑,eg:方法增强)

package com.example.hac.test;// import ...@Component
public class MyBeanPostProcessor implements BeanPostProcessor {@Overridepublic Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException {if (beanName.equals("user")) {System.out.println("postProcessBeforeInitialization方法执行了->user对象初始化方法前开始增强....");}return bean;}@Overridepublic Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException {if (beanName.equals("user")) {System.out.println("postProcessAfterInitialization->user对象初始化方法后开始增强....");}return bean;}
}

User

package com.example.hac.test;// import ...@Component
public class User implements BeanNameAware, BeanFactoryAware, ApplicationContextAware, InitializingBean {public User() {System.out.println("User的构造方法执行了.........");}private String name;@Value("张三")public void setName(String name) {System.out.println("setName方法执行了.........");}@Overridepublic void setBeanName(String name) {System.out.println("setBeanName方法执行了.........");}@Overridepublic void setBeanFactory(BeanFactory beanFactory) throws BeansException {System.out.println("setBeanFactory方法执行了.........");}@Overridepublic void setApplicationContext(ApplicationContext applicationContext) throws BeansException {System.out.println("setApplicationContext方法执行了........");}@PostConstructpublic void init() {System.out.println("init方法执行了.................");}@Overridepublic void afterPropertiesSet() throws Exception {System.out.println("afterPropertiesSet方法执行了........");}@PreDestroypublic void destory() {System.out.println("destory方法执行了...............");}}

main方法

package com.example.hac.test;// import ...public class Test {public static void main(String[] args) {ApplicationContext context = new AnnotationConfigApplicationContext(SpringConfig.class);User bean = context.getBean(User.class);System.out.println(bean);}
}

结果

执行main方法后结果如下:
在这里插入图片描述

User的构造方法执行了.........
setName方法执行了.........
setBeanName方法执行了.........
setBeanFactory方法执行了.........
setApplicationContext方法执行了........
postProcessBeforeInitialization方法执行了->user对象初始化方法前开始增强....
init方法执行了.................
afterPropertiesSet方法执行了........
postProcessAfterInitialization->user对象初始化方法后开始增强....
com.example.hac.test.User@651aed93

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 深度学习100问6-什么是向量降维
  • 游戏开发设计模式之命令模式
  • Mysql语句性能优化
  • 中国数据库的崛起:从本土化挑战到全球化机遇
  • PCIE-Precode
  • 双系统安装:一键解锁电脑新境界,Windows与Linux并肩作战!
  • 华为自研仓颉编程语言测试版上线,计划持续到10月21号
  • 【操作系统】11.什么是文件?
  • 在SpringBoot项目中如何集成eureka
  • CPP中lamada表达式作用一览[more cpp-6]
  • Junit单元测试笔记
  • 继承的初始化顺序
  • 解析Java中1000个常用类:ServiceLoader类,你学会了吗?
  • SpringBoot工厂模式
  • 【重点】人工智能大语言模型技术发展研究报告2024|附下载
  • Android开源项目规范总结
  • canvas绘制圆角头像
  • Centos6.8 使用rpm安装mysql5.7
  • laravel 用artisan创建自己的模板
  • LeetCode算法系列_0891_子序列宽度之和
  • oldjun 检测网站的经验
  • React-Native - 收藏集 - 掘金
  • 订阅Forge Viewer所有的事件
  • 关于Flux,Vuex,Redux的思考
  • 欢迎参加第二届中国游戏开发者大会
  • 解决iview多表头动态更改列元素发生的错误
  • 解析 Webpack中import、require、按需加载的执行过程
  • 前端知识点整理(待续)
  • 微信公众号开发小记——5.python微信红包
  • 温故知新之javascript面向对象
  • 一文看透浏览器架构
  • hi-nginx-1.3.4编译安装
  • ​ 全球云科技基础设施:亚马逊云科技的海外服务器网络如何演进
  • ​​​​​​​​​​​​​​Γ函数
  • ​Distil-Whisper:比Whisper快6倍,体积小50%的语音识别模型
  • ​批处理文件中的errorlevel用法
  • ‌前端列表展示1000条大量数据时,后端通常需要进行一定的处理。‌
  • # Kafka_深入探秘者(2):kafka 生产者
  • # 利刃出鞘_Tomcat 核心原理解析(八)-- Tomcat 集群
  • #LLM入门|Prompt#1.8_聊天机器人_Chatbot
  • #QT(QCharts绘制曲线)
  • #每天一道面试题# 什么是MySQL的回表查询
  • (07)Hive——窗口函数详解
  • (2009.11版)《网络管理员考试 考前冲刺预测卷及考点解析》复习重点
  • (52)只出现一次的数字III
  • (C)一些题4
  • (html5)在移动端input输入搜索项后 输入法下面为什么不想百度那样出现前往? 而我的出现的是换行...
  • (ISPRS,2023)深度语义-视觉对齐用于zero-shot遥感图像场景分类
  • (翻译)Entity Framework技巧系列之七 - Tip 26 – 28
  • (附源码)node.js知识分享网站 毕业设计 202038
  • (简单有案例)前端实现主题切换、动态换肤的两种简单方式
  • (杂交版)植物大战僵尸
  • (转)真正的中国天气api接口xml,json(求加精) ...
  • (转载)PyTorch代码规范最佳实践和样式指南
  • (自用)交互协议设计——protobuf序列化