一、入门级:启动main方法中添加初始化逻辑 在Spring Boot的main入口启动方法中,执行SpringApplication.run(LimitApplication.class, args)是可以返回ApplicationContext对象的,我们可以从ApplicationContext中获取指定的bean对象,执行初始化逻辑。 @SpringBootApplication(scanBasePackages={"com.laowan.limit"})publicclassLimitA...
1. Spring Boot 启动流程 在深度探讨之前,让我们简单了解一下 Spring Boot 的启动流程。当 Spring Boot 应用启动时,它将经历以下几个主要步骤: 读取配置文件。 创建Spring 上下文。 执行自动配置。 执行Bean 的初始化。 启动嵌入式服务器。 触发ApplicationReadyEvent。 我们将关注的是ApplicationReadyEvent,这是一个...
ApplicationStartedEvent:当应用启动且环境和上下文准备完成,但在CommandLineRunner和ApplicationRunner执行之前发布。可以用于执行在应用准备完成但未完全启动时的操作。 SpringApplicationRunListener:Spring Boot 内置的监听器,主要用于 SpringBoot 启动的整个过程。比如:初始化、环境准备、上下文准备和完全启动等多个阶段。 star...
1.启动时初始化:同CommandLineRunner,也可用于执行启动后的一次性操作,例如读取配置、初始化缓存、检查...
方案想好了就要想实现方式了,想个最直接的方案,在Spring容器初始化时就把这些数据从数据库拿到内存中,后面就直接调用。 SpringBoot中有两个接口能实现该功能:CommandLineRunner和ApplicationRunner。 2.1 CommandLineRunner 首先了解一下CommandLineRunner的基本用法,CommandLineRunner可以在系统启动后执行里面的run方法 ...
新建AppInit 实现 ApplicationRunner 接口完成启动项目时异步数据初始化 前言 前面的工作中,为了提高地区数据的响应时间,需要加载全国区划数据到 redis 中缓存起来,这个过程希望在项目时启动。 由于初始化全国区划到 redis 中这个过程是比较耗时的,所以我们可以考虑使用异步执行的方式去实现。
在SpringBoot 项目启动成功后,根据业务需求的特殊性,在某个组件被调用前,我们可能还需要做一些准备工作。 比如把配置文件properties 里的变量赋值给组件里的静态变量,从而实例化某个对象,加载某个资源等等。 这些准备工作都有一个特点,就是需要在组件被容器实例化后,在组件其他任何方法被调用之前执行。
核心的启动初始化操作类SetupInit和DefaultApplicationRunner packagecom.erbadagang.setup.init.setupinit.init;importcom.erbadagang.setup.init.setupinit.service.MyService;importlombok.extern.slf4j.Slf4j;importorg.springframework.beans.factory.annotation.Autowired;importorg.springframework.boot.context.event.Applicat...
一、场景说明 SpringBoot应用启动后自动调用接口(或组件),做一些初始化操作。需要初始化操作的接口: 二、实现方式 2.1 实现方式一:@PostConstruct ...