Spring源码(十三):Spring全系列总结

Spring总结篇,不同于之前抽丝剥茧式地纵向深入源码,本次从横向的角度出发,希望可以带个读者一个完全不同的Spring视角。

2024年重置版,搞点不一样的东西。希望通过本篇的内容,将之前的文章全部给串起来。

相关前文:

一、Bean的生命周期

我们先从狭义上进行简单划分:

  1. 实例化前(Before Instantiation):执行 cls.newInstance 之前,AOP动态代理、池化操作在此步进行。
  2. 实例化(Instantiation):执行 cls.newInstance 。
  3. 实例化后(After Instantiation):执行 cls.newInstance 之后。
  4. 填充属性(Population of Properties):注入字段,处理@Autowired、@Value、@Resource。
  5. 初始化前(Before Initialization):给与Aware接口资源
  6. 初始化(Initialization):执行@PostConstruct、执行afterPropertiesSet方法、init-method,执行顺序依次降低。
  7. 初始化后(After Initialization):无特殊操作。
  8. 使用中(In Use):代码运行中…
  9. 销毁(Destruction):分销毁前、销毁后。

如下是一张图,较为全貌地展示了bean的生命周期

bean的生命周期

二、BeanPostProcessor

我们再看下一个Bean在整个生命周期中都会经过哪些Spring内置的BeanPostProcessor,我们在其中的各个环节都可以做些什么。

便于理解,这里只列举关键BeanPostProcessor接口,不会过多扩展。

1、测试代码

import org.springframework.beans.BeansException;
import org.springframework.beans.PropertyValues;
import org.springframework.beans.factory.DisposableBean;
import org.springframework.beans.factory.InitializingBean;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.config.BeanPostProcessor;
import org.springframework.beans.factory.config.InstantiationAwareBeanPostProcessor;
import org.springframework.beans.factory.config.SmartInstantiationAwareBeanPostProcessor;
import org.springframework.beans.factory.support.RootBeanDefinition;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
import org.springframework.context.annotation.Bean;

import javax.annotation.PostConstruct;
import java.lang.reflect.Constructor;

public class BeanPostProcessorTest {
   
   

    public static void main(String[] args) {
   
   
        AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(BeanPostProcessorTest.class);
        context.registerBeanDefinition("testBean", new RootBeanDefinition(TestBean.class));
        Object testBean = context.getBean("testBean");
        System.out.println(testBean);
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值