Spring中bean生命周期过程是如何通过代码实现的?

摘要:今天我们编写一个简单的demo来分析一下spring中整个bean的生命周期 编写Demo 1. 首先我们定义一个BeanFactoryProcessor的类,目的是为了看出PostProcessBeanFactory接口被调用的时间点 p
今天我们编写一个简单的demo来分析一下spring中整个bean的生命周期 编写Demo 1. 首先我们定义一个BeanFactoryProcessor的类,目的是为了看出PostProcessBeanFactory接口被调用的时间点 package cn.sue.spring.test.lifecycle; import org.springframework.beans.BeansException; import org.springframework.beans.factory.config.BeanFactoryPostProcessor; import org.springframework.beans.factory.config.ConfigurableListableBeanFactory; import org.springframework.stereotype.Component; /** * <p> * * </p> * * @author Sue * @className MyBeanFactoryPostProcessor * @create 2023/4/25 **/ @Component public class MyBeanFactoryPostProcessor implements BeanFactoryPostProcessor { public MyBeanFactoryPostProcessor() { super(); System.out.println("【BeanFactoryPostProcessor】实现类的构造函数"); } // 允许我们在工厂里所有的bean被加载进来后但是还没初始化前,对所有bean的属性进行修改也可以add属性值,该操作在对应bean的构造函数执行前 @Override public void postProcessBeanFactory(ConfigurableListableBeanFactory arg0) throws BeansException { System.out.println("BeanFactoryPostProcessor.postProcessBeanFactory(),来自MyBeanFactoryPostProcessor"); //获取到Spring中所有的beanName String[] beanStr = arg0.getBeanDefinitionNames(); //循环打印 for (String beanName : beanStr) { System.out.print("已加载的bean name:" + beanName + ";" + "\n"); } System.out.println(); } } 2. 接着再写一个实现了BeanPostProcessor的类,目的是为了看出bean初始化前后的时间点 package cn.sue.spring.test.lifecycle; import org.springframework.beans.BeansException; import org.springframework.beans.factory.config.BeanPostProcessor; import org.springframework.stereotype.Component; /** * <p> * * </p> * * @author Sue * @className MyBeanPostProcessor * @create 2023/4/25 **/ @Component public class MyBeanPostProcessor implements BeanPostProcessor { public MyBeanPostProcessor() { super(); System.out.println("BeanPostProcessor{}实现类的构造函数"); } // 实例化、依赖注入完毕,在调用显示的初始化之前完成一些定制的业务 @Override public Object postProcessAfterInitialization(Object
阅读全文