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

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中常见的各种初始化场景分析的更多相关文章

  1. Springboot中mybatis执行逻辑源码分析

    Springboot中mybatis执行逻辑源码分析 在上一篇springboot整合mybatis源码分析已经讲了我们的Mapper接口,userMapper是通过MapperProxy实现的一个动 ...

  2. Js中常见的内存泄漏场景

    常见的内存泄漏场景 内存泄漏Memory Leak是指程序中已动态分配的堆内存由于疏忽或错误等原因程序未释放或无法释放,造成系统内存的浪费,导致程序运行速度减慢甚至系统崩溃等严重后果.内存泄漏并非指内 ...

  3. SpringBoot中常见注解含义总结

    @RestController @RestController被称为一个构造型(stereotype)注解.它为阅读代码的开发人员提供建议.对于Spring,该类扮演了一个特殊角色.它继承自@Cont ...

  4. spring中bean配置和注入场景分析

    bean与spring容器的关系 Bean配置信息定义了Bean的实现及依赖关系,Spring容器根据各种形式的Bean配置信息在容器内部建立Bean定义注册表,然后根据注册表加载.实例化Bean,并 ...

  5. SpringBoot中常见的错误

    数据源配置问题 原因 spring boot默认会加载org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration类, ...

  6. redis-数据结构以及使用场景分析

    目录 redis 常见数据结构以及使用场景分析 key String Hash List Set Sorted Set Bitmap和HyperLogLog Pub/Sub redis 常见数据结构以 ...

  7. SpringBoot中通过SpringBootServletInitializer如何实现容器初始化

    相关文章 <Servlet3.0之四:动态注册和Servlet容器初始化> <SpringBoot中通过SpringBootServletInitializer如何实现组件加载> ...

  8. JVM之调优及常见场景分析

    JVM调优 GC调优是最后要做的工作,GC调优的目的可以总结为下面两点: 减少对象晋升到老年代的数量 减少FullGC的执行时间 通过监控排查问题及验证优化结果,可以分为: 命令监控:jps.jinf ...

  9. Java中9种常见的CMS GC问题分析与解决

    1. 写在前面 | 本文主要针对 Hotspot VM 中"CMS + ParNew"组合的一些使用场景进行总结.重点通过部分源码对根因进行分析以及对排查方法进行总结,排查过程会省 ...

  10. C++ STL中常见容器的时间复杂度和比较和分析

    C++ STL中常见容器的时间复杂度 map, set, multimap, and multiset 上述四种容器采用红黑树实现,红黑树是平衡二叉树的一种.不同操作的时间复杂度近似为: 插入: O( ...

随机推荐

  1. ES7-ES12总结篇

    脑图模式       插入 ES7-ES12  ES7  Array.prototype.includes()   includes() 方法用来判断一个数组是否包含一个指定的值,如果包含则 ...

  2. react实现转盘动画

    转盘动画方法如下: /** * 点击转动转盘 */ const turnCircle = () => { let runDeg = +(Math.random() * 360).toFixed( ...

  3. java整合SSM框架

    使用Myeclipse搭建maven项目 准备工作 安装maven 官网下载安装(http://maven.apache.org/)    配置环境变量      配置完后,使用命令行输入mvn -v ...

  4. animation 和 transition 的区别

    Transition 提供了从一种状态过渡到另一种状态的改变. Animation 则可以从不同关键帧(@keyframes)上设置多个过渡点. Transition 关注的是元素指定css属性的变化 ...

  5. 【内存管理】ION内存管理器浅析(system heap)(基于linux 4.14)

    什么是ION ION具体不知道是什么的缩写,只知道是android系统上google引入的内存管理方式,为了实现用户与内核间数据共享时零拷贝.多用于多媒体,比如camera和display,graph ...

  6. Docker 环境规划 (Docker安装)

    一.环境规划 支持Java.dotNet.Vue项目构建 二.切换系统镜像源   1.备份      mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.rep ...

  7. 10.10 2020 实验 6:OpenDaylight 实验——OpenDaylight 及 Postman 实现流表下发

    一.实验目的 熟悉 Postman 的使用:熟悉如何使用 OpenDaylight 通过 Postman 下发流表.   二.实验任务 推荐阅读:SDNLAB 文章:OpenFlow 协议超时机制简介 ...

  8. 2020/03/25 CSS相关知识点

    2020-03-25 16:35:03 又是一个风和日丽的下午!今天的内容比较多 真是令人头大 ,手速又慢所以缺的可能比较多,而且这东西还是多靠实践为好. 文件下载地址: https://share. ...

  9. iphone 熄屏黑屏录像方法-取证拍摄-自带功能

    iphone 有个旁白模式是为了残疾盲人的只听模式. 1.在 设置 - 辅助功能 - 辅助功能快捷键 - 选旁白 ,这样按三下电源键进入/退出旁白模式. 2.把声音调没,这样旁白就不会发出朗读. 3. ...

  10. WIn环境基于vs编辑器,Qt应用申请管理员权限的解决方法(转载)

    原文章地址:https://blog.csdn.net/weixin_38416696/article/details/103879377 基本按照那个文章的操作.基本可以了. 唯一问题就是那个vs的 ...