SpringBoot中常见的各种初始化场景分析

大家能区分出以下各种初始化适用的场景吗

ApplicationRunner,CommandLineRunner,BeanFactoryPostProcessor,InitializingBean,BeanPostProcessor

首先可以简单分类

Springboot的钩子

        1,ApplicationRunner

        2,CommandLineRunner

上述2个钩子其实没啥区别,都是在springboot容器启动之后,SpringApplication.run("run参数")完成之前,负责初始化

Spring的钩子

        1,BeanFactoryPostProcessor

        官方解释用白话翻译一下就是,所有的Bean都收集完成啦,下一步就是Bean的初始化(Bean对象创建,依赖的其他对象注入),这个后置操作目的就是对还为初始化的Bean集合进行裁剪,添加,删除

        2,BeanPostProcessor

       这个时候,Bean已经初始化完成啦,但是我们可以对Bean进行操作,比如:对这个Bean进行静态代理,在帮这个静态代理返回到Bean集合中,那么你从IOC容器中获取的Bean实例时就是这个静态代理对象啦,而不是原先的那个Bean啦(说白啦,spring担心你想对Bean对象进行处理,给你提供一个入口)

        3,InitializingBean

        提供这个后置操作的目的,是为了进行业务准备的,比如:当Bean初始化完成以后,你要从数据库中加载一部分数据到内存。

下面花了一张图,方便大家理解

 

 

 

posted on 2023-03-31 17:30  柠檬糖大人你尽然盗号  阅读(59)  评论(0编辑  收藏  举报

导航