如何spring启动过程中做一些额外操作

news/2024/9/21 14:40:21 标签: spring, java, 后端

ApplicationReadyEvent

        在应用程序启动时,可以通过监听应用启动事件,或者在应用的初始化阶段,加一些需要的操作。
        ApplicationReadyEvent 是 Spring Boot 框架中的一个事件类,它表示应用程序已经准备好接收请求,即应用程序已启动且上下文已刷新。这个事件是在 ApplicationContext 被初始化和刷新,并且应用程序已经准备好处理请求时触发的。
        基于ApplicationReadyEvent,我们可以在应用程序完全启动并处于可用状态后执行一些初始化逻辑。使用@EventListener 注解或实现 ApplicationListener 接口来监听这个事件。例如,使用 @EventListener 注解:

    @EventListener(ApplicationReadyEvent.class)
    public void preloadcache(){
        //在应用启动后执行缓存预热逻辑// ..
    }

Runner

        如果你不想直接监听ApplicationReadyEvent,在SpringBoot中,也可以通过CommandLineRunner 和ApplicationRunner 来实现这个功能。
        CommandLineRunner 和 ApplicationRunner 是Spring Boot 中用于在应用程序启动后执行特定逻辑的接口。这解释听上去就像是专门干这个事儿的。

package com.sinosoft.urdp.module.delay.service.delay;

import org.springframework.boot.CommandLineRunner;
import org.springframework.stereotype.Component;

@Component
public class MyTestRunner implements CommandLineRunner {
    @Override
    public void run(String... args) throws Exception {
        //添加自己需要的一些操作
    }
}
package com.sinosoft.urdp.module.delay.service.delay;

import org.springframework.boot.ApplicationArguments;
import org.springframework.boot.ApplicationRunner;
import org.springframework.stereotype.Component;

@Component
public class MyTestRunner implements ApplicationRunner {

    @Override
    public void run(ApplicationArguments args) throws Exception {
           //添加自己需要的一些操作
    }
}

使用@PostConstruct注解

类似的,我们还可以使用 @PostConstruct 注解标注一个方法,该方法将在 Bean 的构造函数执行完毕后立即被调用。在这个方法中执行缓存预热的逻辑。

@Component
public class PreCacheloader {
    @PostConstruct
    public void preloadcache(){
        // 执行缓存预热逻辑
    }
}

使用InitializingBean接口

实现 InitializingBean 接口,并在 afterPropertiesSet 方法中执行缓存预热的逻辑。这样,Spring 在初始化Bean 时会调用 afterPropertiesSet 方法。

package com.sinosoft.urdp.module.delay.service.delay;


import org.springframework.beans.factory.InitializingBean;
import org.springframework.stereotype.Component;

@Component
public class MyTestRunner implements InitializingBean {

    @Override
    public void afterPropertiesSet() throws Exception {
        //执行需要的操作
    }
}


http://www.niftyadmin.cn/n/5668964.html

相关文章

基于微信小程序的游泳馆管理系统--论文源码调试讲解

2 关键技术介绍 2.1 SSM框架 开发信息管理系统的主流框架是SSM(Spring Spring MVC MyBatis),SSM框架web层使用Spring MVC框架,使传输前后端数据变得简单;对于业务层使用Spring作为轻量级控制反转和面向切面的容器框…

会声会影2025视频剪辑教学

会声会影2025是一款超级受欢迎的视频播放软件,用于剪辑和编辑各种类型的视频素材。软件具有直观的用户界面,使得即使对于初学者来说也能轻松上手。该软件提供了各种创意工具,可以帮助用户实现他们的创意想法。用户可以裁剪、合并和重新排列视…

三星USB 3.2闪存盘上手:性能超400MB/s

三星作为存储行业的翘楚,不论是品牌影响力还是闪存技术积累,都位于整个行业的头部,为了更好地满足当下快节奏、数字化时代的全面到来,三星存储也推出了新款的USB闪存盘,拥有小巧的身材、强大的性能和海量的存储空间&am…

【笔记】自动驾驶预测与决策规划_Part3_路径与轨迹规划

文章目录 0. 前言1. 基于搜索的路径规划1.1 A* 算法1.2 Hybrid A* 算法 2. 基于采样的路径规划2.1 Frent Frame方法2.2 Cartesian →Frent 1D ( x , y ) (x, y) (x,y) —> ( s , l ) (s, l) (s,l)2.3 Cartesian →Frent 3D2.4 贝尔曼Bellman最优性原理2.5 高速轨迹采样——…

Unborn安装CUDA Toolkit 12.2

Unborn安装CUDA Toolkit 12.2 Unborn安装CUDA Toolkit前言下载安装配置验证 Unborn安装CUDA Toolkit 前言 今天在某台Unborn系统上安装某个依赖库时,提示环境中缺少CUDA_HOME环境变量,导致在安装某些依赖时出现问题。具体异常如下: Lookin…

Java 8 和 MyBatis 框架实现每天凌晨 2 点进行增量缓存

以下是使用 Java 8 和 MyBatis 框架实现每天凌晨 2 点进行增量缓存的完整示例代码: Offering 实体类: public class Offering { private String id; private String name; private String size; private String type; // 构造方法、get…

使用vite+react+ts+Ant Design开发后台管理项目(二)

前言 本文将引导开发者从零基础开始,运用、react、react-router、react-redux、Ant Design、less、tailwindcss、axios等前沿技术栈,构建一个高效、响应式的后台管理系统。通过详细的步骤和实践指导,文章旨在为开发者揭示如何利用这些技术工具…

CleanClip For Mac 強大的剪貼簿助手Paste替代工具 v2.2.1

软件介绍: CleanClip是一款专为Mac设计的强大剪贴板管理工具,旨在提升用户的工作效率和生产力。这款应用完全采用原生Swift编写,为Mac用户提供了流畅、快速且直观的使用体验。CleanClip不仅支持文本内容的管理,还能处理图片、文件…