大家能区分出以下各种初始化适用的场景吗
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初始化完成以后,你要从数据库中加载一部分数据到内存。
下面花了一张图,方便大家理解
标签:初始化,场景,SpringBoot,静态,钩子,Bean,ApplicationRunner From: https://www.cnblogs.com/huxuhong/p/17276984.html