返回

在 Spring Boot 项目启动时执行自定义代码的艺术与妙用

后端

前言

在软件开发中,我们常常需要在应用程序启动时执行一些初始化操作或特定任务。在 Spring Boot 项目中,我们可以通过多种方式在启动时执行自定义代码,从而实现项目的个性化需求。

直接在 main 方法中执行

最简单直接的方式就是在 Spring Boot 项目的 main 方法中执行自定义代码。这种方式简单易用,但灵活性较差,不适合需要在 Spring 容器启动后再执行的任务。

public static void main(String[] args) {
    // 执行自定义代码
    System.out.println("Spring Boot 项目启动时执行自定义代码");
    // Spring 应用启动
    SpringApplication.run(SpringBootDemoApplication.class, args);
}

使用 Spring 事件监听器

Spring Boot 项目启动时会发布一些事件,我们可以通过实现 Spring 事件监听器来监听这些事件,并在事件触发时执行自定义代码。

public class MyApplicationEventListener implements ApplicationListener<ContextRefreshedEvent> {

    @Override
    public void onApplicationEvent(ContextRefreshedEvent event) {
        // 执行自定义代码
        System.out.println("Spring Boot 项目启动完成,执行自定义代码");
    }
}
@SpringBootApplication
public class SpringBootDemoApplication {

    public static void main(String[] args) {
        SpringApplication app = new SpringApplication(SpringBootDemoApplication.class);
        app.addListeners(new MyApplicationEventListener());
        app.run(args);
    }
}

使用 ApplicationRunner 和 CommandLineRunner 接口

ApplicationRunner 和 CommandLineRunner 是两个 Spring Boot 提供的接口,可以用于在 Spring 容器启动后再执行自定义代码。

public class MyApplicationRunner implements ApplicationRunner {

    @Override
    public void run(ApplicationArguments args) throws Exception {
        // 执行自定义代码
        System.out.println("Spring Boot 项目启动完成,执行自定义代码");
    }
}
public class MyCommandLineRunner implements CommandLineRunner {

    @Override
    public void run(String... args) throws Exception {
        // 执行自定义代码
        System.out.println("Spring Boot 项目启动完成,执行自定义代码");
    }
}
@SpringBootApplication
public class SpringBootDemoApplication {

    public static void main(String[] args) {
        SpringApplication.run(SpringBootDemoApplication.class, args);
    }
}

结语

在 Spring Boot 项目中执行自定义代码有多种方式,开发者可以根据项目的具体需求选择合适的方式。无论是直接在 main 方法中执行,还是使用 Spring 事件监听器、ApplicationRunner 或 CommandLineRunner 接口,都可以实现项目的个性化需求。