在我们实际工作中,总会遇到这样需求,在项目启动的时候需要做一些初始化的操作,比如初始化线程池,提前加载好加密证书等。...今天就给大家介绍一个 Spring Boot 神器,专门帮助大家解决项目启动初始化资源操作。...()之前执行,非常适合在应用程序启动之初进行一些数据初始化的工作。...接下来我们就运用案例测试它如何使用,在测试之前在启动类加两行打印提示,方便我们识别 CommandLineRunner 的执行时机。...如果我们在启动容器的时候需要初始化很多资源,并且初始化资源相互之间有序,那如何保证不同的 CommandLineRunner 的执行顺序呢?Spring Boot 也给出了解决方案。
Spring Boot会自动为我们做很多配置,但迟早你需要做一些自定义工作。在本文中,您将学习如何挂钩应用程序引导程序生命周期并在Spring Boot启动时执行代码。...1.执行bean初始化的方法 Spring启动应用程序后运行某些逻辑的最简单方法是将代码作为所选bean引导过程的一部分来执行。...Boot应用程序启动时,它会在引导过程的各个步骤上发布几个事件。...3.在启动时但没有运行Tomcat时运行代码 尽管Spring Boot设计人员在创建框架时考虑了构建胖JAR,但是一些开发人员仍然将Spring Boot应用程序部署到常规的servlet容器(如Tomcat...结论 简而言之,在Spring Boot启动时运行代码有两个主要选项。
前言 为了更好的去理解Spring MVC的工作机制,这边博文我们主要讲述Spring MVC在初始化的时候(容器启动的时候),做的一些准备工作。...比如URL和Controller的绑定,以及URL和方法method的绑定,拦截器的初始化,视图解析器的初始化等Spring MVC web9大组件的初始化 在上篇博文: 【小家Spring】Spring...容器(含父子容器)的启动过程源码级别分析(含web.xml启动以及全注解驱动,和ContextLoader源码分析) 从源码层面,我已经很清楚的了解到了父容器以及Spring MVC子容器的一个初始化的过程...ResourceBundleViewResolver 这个有点复杂 reeMarkerViewResolver、VolocityViewResolver 都基于url 但会解析成特定的view 实现类也非常的多,在Spring...总结 DispatcherServlet的Spring MVC9大组件的介绍,以及他们的初始化的一个流程就到这了。
Spring Boot Application 事件和监听器 寻找到application.yml的读取的操作。...在application.yml文件读取完会触发一个事件ConfigFileApplicationListener 该监听器实现文件的读取。...> var1); 如何在 SmartApplicationListener 实现监听解耦 1、我们只需在加载完成之后去加入一个监听器。...可以这样来粗劣的介绍一下 详情可以请看 springboot启动时是如何加载配置文件application.yml文件 三、最终结果: 新增一个监听器 既然我们要在配置文件加载之后搞事情那么我们直接复制...onApplicationEvent(ApplicationEvent event) { // ApplicationEnvironmentPreparedEvent 是加载配置文件,初始化日志系统的事件
在Spring Boot中加载初始化数据 在Spring Boot中,Spring Boot会自动搜索映射的Entity,并且创建相应的table,但是有时候我们希望自定义某些内容,这时候我们就需要使用到...Boot程序,将会自动创建Country表。...('Brazil'); INSERT INTO country (name) VALUES ('USA'); INSERT INTO country (name) VALUES ('Italy'); 在data.sql...我们需要关闭spring boot的schema自动创建功能以防冲突: spring.jpa.hibernate.ddl-auto=none spring.jpa.hibernate.ddl-auto...executionPhase : 可以选择脚本是在BEFORE_TEST_METHOD 或者 AFTER_TEST_METHOD来执行。
但 Spring 已经是 Java Web 领域使用最多,应用最广泛的 Java 框架。 此文将专注讲解如何在 Spring 容器启动时实现我们自己想要实现的逻辑。...我们时常会遇到在 Spring 启动的时候必须完成一些初始化的操作,如创建定时任务,创建连接池等。...不依赖于 Spring 的实现,回归 Java 类实现本身,我们可以在静态代码块,在类构造函数中实现相应的逻辑,Java 类的初始化顺序依次是静态变量 > 静态代码块 > 全局变量 > 初始化代码块 >...@PostConstruct 在 Spring 中,我们可以使用@PostConstruct在 Bean 初始化之后实现相应的初始化逻辑,@PostConstruct修饰的方法将在 Bean 初始化完成之后执行...Spring 有一套完整的事件机制,在 Spring 启动的时候,Spring 容器本身预设了很多事件,在 Spring 初始化的整个过程中在相应的节点触发相应的事件,我们可以通过监听这些事件来实现我们的初始化逻辑
Sentinel 进程在与其他 Sentinel 进程进行通信后,将收集到的主节点信息进行合并,形成全局的主节点列表。...Sentinel 进程在监控主节点的过程中,会不断地检查主节点的健康状态,一旦主节点出现故障,Sentinel 进程会根据预先配置的策略,选择一个从节点升级为新的主节点并通知其他从节点。...Redis Sentinel 初始化步骤读取 Sentinel 配置文件 sentinel.conf,获取配置信息。解析配置文件中的各个参数,并将其保存到内存中。...Sentinel 进程根据配置文件中定义的如果没有足够的主节点可用时,应该如何处理的规则,在初始化阶段决定对于每个被监控的主节点是否需要进行故障转移。
就是上一篇文章中在SpringApplication构造方法中创建的引导注册组件初始化器集合(查询spring.factories文件,没有找到BootstrapRegistryInitializer的实现类...) 调用初始化器的initialize方法,参数为bootstrapContext,也就是说每个初始化器都会对bootstrapContext进行必要的设置和准备(启动时需要的资源和依赖) 本方法是在run...PROTOTYPE } } 总结:用于注册引导阶段的组件,在应用启动时通过register方法动态添加对象 2、BootstrapContext接口 一个简单的引导上下文,在启动和处理环境配置期间可用...的构造方法中通过查找META-INF/spring.factories文件进行加载,然后在引导上下文实例创建完成后,遍历并调用所有BootstrapRegistryInitializer#initialize...:该接口作为对象注册表,允许在应用启动早期阶段进行组件的注册和管理,提供了对高成本实例的惰性访问 BootstrapContext:作为引导上下文的只读访问接口,它确保注册的组件能够安全、可靠地在应用上下文准备好之前被访问
DelegatingApplicationContextInitializer适用于需要在 Spring 应用程序启动时,按顺序动态加载和执行多个不同的应用上下文初始化器的场景,特别是在具有多个模块或复杂配置的应用中...例如,当需要根据不同的环境配置(如开发、测试、生产环境)执行不同的初始化任务,或者在应用启动时灵活地执行自定义的初始化逻辑(如数据库连接配置、安全设置或外部服务的初始化)时,使用DelegatingApplicationContextInitializer...框架中的一个初始化器,它在 Spring 应用上下文初始化过程中,负责确保 MetadataReaderFactory 实例在整个上下文中共享,避免每次进行类路径扫描时都重新创建该工厂实例。...框架中的一个应用上下文初始化器,它用于在 Spring 应用程序启动时检查并发出有关配置方面的警告,尤其是关于弃用的配置或潜在不推荐的配置。...应用上下文初始化器,专门用于确保RSocket协议相关的端口信息在 Spring 应用启动时得到正确配置和初始化,特别适用于使用 RSocket 协议进行高效、双向通信的应用场景,如微服务架构和实时通信应用
文章目录 通过SpringApplication开始引导启动 SpringApplication类是用来执行Spring框架启动的引导类。...有两种方式可以进行启动引导: 通过静态方法 SpringApplication.run启动。 先创建 SpringApplication实例,在调用的实例方法 run进行启动。...new SpringApplication——创建引导启动的实例 在创建SpringApplication实例的时候,会根据用户输入和工程环境做一些基础配置,供之后引导启动中使用。...比如初始化启动时间,初始化PropertySources(在AbstractApplicationContext中只是一个空方法,留给子类根据需要实现),以及校验环境中是否已经有必要的参数。...注册表中。
有些朋友,可能对 primarySources 这个可变参数的描述有点疑惑,下面我们就用实例来演示以其他引导类为入口类进行 Spring Boot 项目启动:首先,我们在入口类 DemoApplication...BootstrapRegistryInitializer 是 Spring Cloud Config 的组件之一,它的作用是在应用程序启动时初始化 Spring Cloud Config 客户端。...这个接口的实现类可以被视为回调函数,它们的 onApplicationEvent 方法会在Spring 容器启动时被自动调用,从而允许开发人员在容器刷新之前执行一些自定义的操作。...例如,在一个 Spring Boot 项目中,我们可能想要在容器启动时执行一些特定的操作,如加载配置等,就可以通过实现 ApplicationListener 接口来完成。...只有了解 Spring Boot 在启动时都做了些什么,我们才能在后续的实践的过程中更好地理解其运行机制,以便遇到问题能更快地定位和排查,使我们应用能够更容易、更方便地接入 Spring Boot 。
《Spring Boot 源码学习系列》 一、引言 上一篇博文《BootstrapRegistry 初始化器实现》,Huazie 向大家介绍了如何自定义 BootstrapRegistryInitializer...2.1 BootstrapContext 在 《深入 BootstrapContext 及其默认实现》 中,Huazie 详细介绍了引导上下文 BootstrapContext 及其默认实现 DefaultBootstrapContext...2.2 BootstrapRegistry 初始化器实现 在开始讲解 BootstrapContext 的实际使用场景之前,我们需要首先通过 BootstrapRegistry 初始化器实现类 注册自定义的对象...通过阅读相关的源码,可总结如下的两种方式: 在 META-INF/spring.factories 中添加 org.springframework.context.ApplicationListener...三、总结 本篇 Huazie 通过介绍 BootstrapContext 的实际使用场景,并演示了引导上下文在这些场景的实际使用,加深了大家对于 Spring Boot 的启动引导过程的了解,为后续的源码分析打下基础
文件 查找引导注册组件初始化器BootstrapRegistryInitializer 查询上下文初始化器ApplicationContextInitializer 查询监听器ApplicationListener...它的主要功能是提供一种自动装配机制,用于在应用启动时自动加载指定的类。通过spring.factories文件,开发者可以将特定的配置类、监听器、过滤器等组件注册到Spring上下文中。...文件路径 spring-boot-2.7.18.jar spring-boot-autoconfigure-2.7.18.jar spring-beans-5.3.31.jar 查询引导注册组件初始化器...2.3、引导注册组件初始化器BootstrapRegistryInitializer BootstrapRegistryInitializer在ApplicationContext创建之前对注册表进行配置...此操作通常是提前加载一些可能需要时间初始化的资源,以优化启动时间 触发时机:在应用启动阶段,通过后台线程异步执行 后续篇章会单独解析每一个监听器器。
在正式开始读 Spring Boot 启动流程源码之前,先大体了解 Spring Boot 生命周期以及相应的事件。...Boot 启动时的生命周期,而在每个生命周期节点会广播相应的事件。...getSpringFactoriesInstances(BootstrapRegistryInitializer.class)); System.out.println("\t 引导程序注册的初始化器初始化后的值为...在 SpringApplication 构造方法调用完毕后,接着会调用 SpringApplication 对象的 run 方法,坊间也称之为 Spring Boot 启动时的运行方法,若想探究 Spring...读取 BootstrapRegistryInitializer 类的实例名称集合并完成初始化操作)进行逐个初始化操作(个人理解:可以做应用启动前的初始化检查动作,例如从远端拿证书文件,获取密钥,服务启动时的口令等等
的源码可知,从 Spring Boot 2.4.0 版本开始支持引导上下文。...在《BootstrapRegistryInitializer 详解》中,Huazie 带大家详细分析了加载并初始化 BootstrapRegistryInitializer 的逻辑。...而这里的 createBootstrapContext 方法就是用于创建默认的引导上下文对象 DefaultBootstrapContext,并利用 BootstrapRegistry 初始化器初始化该引导上下文对象...StartupInfoLogger 类用于在应用程序启动时记录应用信息,其中 logStarted 方法用于以 INFO 日志级别打印应用启动时间。...Spring Boot 提供 ApplicationRunner 和 CommandLineRunner 这两种接口,是为了通过它们来实现在容器启动时执行一些操作。
在应用程序关闭时删除键空间会从键空间中的表中删除键空间和所有数据。...依赖键空间的其他组件的初始化 一大类应用程序(那些在 Spring 上下文启动后才使用数据库的应用程序)可以使用数据库初始化程序而不会出现进一步的复杂情况。...如果其他 bean 依赖相同的数据源并在初始化回调中使用会话工厂,则可能存在问题,因为数据尚未初始化。一个常见的例子是缓存,它会在应用程序启动时急切地初始化并从数据库加载数据。...要解决此问题,您有两种选择:将缓存初始化策略更改为稍后阶段或确保首先初始化键空间初始化程序。 如果应用程序在您的控制之下而不是在其他情况下,则更改缓存初始化策略可能很容易。...这种结构在 Spring Web 应用程序中很常见,但可以更普遍地应用。 使用表和用户定义类型的模式管理使用 Spring Data Cassandra 的内置模式生成器初始化键空间。
如果应用程序中存在org.springframework.web.reactive.DispatcherHandler 这个类,则表示是一个响应式 web 应用,项目在启动时,需要去加载启动内嵌的响应式...实例化所有在META-INF/spring.factories下找到的资源信息 3....推断引导类 private Class在META-INF/spring.factories下找到的资源信息 # Run Listeners org.springframework.boot.SpringApplicationRunListener...首先初始化 SpringApplication 类,并推断 WEB 启动类型,再初始化和实现应用事件监听器,然后推断引导类。 2.
AutoConfigurationImportSelector:在扫描到 @EnableAutoConfiguration 时,Spring Boot 使用这个类选择要加载的自动配置类。...META-INF/spring.factories:这个文件列出了所有自动配置类的完整类名,Spring Boot 在启动时会加载这些类。2....SpringApplication概念SpringApplication 类是 Spring Boot 应用的启动引导类,负责引导和启动整个 Spring Boot 应用。...ApplicationContextInitializer 和 ApplicationListener:在启动过程中,SpringApplication 会调用这些接口来初始化上下文和监听事件。...源码分析LoggingApplicationListener:在应用启动时初始化日志系统。
《Spring Boot 源码学习系列》 一、引言 前面的博文《BootstrapRegistryInitializer 详解》,Huazie 带大家一起详细分析了 Spring Boot 启动时加载并初始化...Boot 启动引导阶段进行加载并初始化。...在 DemoBootstrapContextClosedListener 中,我们看到了 BootstrapContext 的使用,显然这里涉及到了引导上下文的实际使用场景,由于篇幅受限,将在下篇介绍...另外,在 DemoBootstrapContextClosedListener 中,还看到它实现了 Ordered 接口【spring-core 包中的接口】。...三、总结 本篇 Huazie 介绍了如何自定义 BootstrapRegistry 初始化器实现,其中演示如何在引导上下文中注册了自定义的对象以及如何在引导上下文中添加引导上下文关闭事件监听器。
领取专属 10元无门槛券
手把手带您无忧上云