当前位置: 首页 > 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

http://www.mrgr.cn/news/8322.html

相关文章:

  • macOS安装搭建python环境
  • 自然语言处理系列四十二》新词发现与短语提取》新词发现》代码实战
  • redis 过期监听:高效管理数据生命周期
  • ffmpeg6.1集成ffmpeg-gl-transition滤镜
  • 在.NET开发中使用 Excel 的最佳方式之一:MiniExcel
  • leetcode53:最大子数组和
  • Nodejs中使用FFmpeg
  • LLM agentic模式之规划能力(planning)
  • K8S系列——(二)、K8S部署RocketMQ集群
  • Flutter ListView 实现不同样式 item
  • print输出不换行 、制表符、while循环制作九九乘法表 复习奥
  • 遍历时修改列表导致错误或意外行为
  • Tita的OKR :产品经理的OKR
  • 云手机解决了TikTok哪些账号运营难题?
  • 硬件面试经典 100 题(81~90)题
  • 在Uni-app中实现计时器效果
  • Flink任务和任务槽详解
  • 企业级WEB应用服务器TOMCAT——超详细攻略
  • 数学建模之数据分析【九】:数据清理总结
  • JavaScript(28)——正则表达式