2023-10-15
Spring Boot
0

目录

SmartInitializingSingleton
CommandLineRunner
简单使用

SmartInitializingSingletonCommandLineRunner 是 Spring Boot 中的两个接口,用于在 Spring Boot 应用程序启动时执行一些初始化操作。

SmartInitializingSingleton

SmartInitializingSingleton 接口是在 Spring Boot 应用程序启动时初始化单例 bean 的一种方式。通常,Spring 在容器启动时会实例化所有的 singleton bean,但某些情况下,可能需要在所有 bean 创建后执行某些初始化操作。这时,您可以实现 SmartInitializingSingleton 接口来执行此操作。

示例

java
import org.springframework.beans.factory.SmartInitializingSingleton; import org.springframework.stereotype.Component; @Component public class MySmartInitializingSingletonBean implements SmartInitializingSingleton { @Override public void afterSingletonsInstantiated() { // 在所有单例 bean 实例化后执行初始化操作 // 可以在这里执行您的初始化逻辑 System.out.println("Initializing singletons..."); } }

CommandLineRunner

CommandLineRunner 接口是 Spring Boot 提供的另一种初始化机制,允许您在 Spring Boot 应用程序启动时运行一些命令行任务。您可以实现 CommandLineRunner 接口并重写 run 方法,以定义在应用程序启动时要执行的任务。

示例

java
import org.springframework.boot.CommandLineRunner; import org.springframework.stereotype.Component; @Component public class MyCommandLineRunner implements CommandLineRunner { @Override public void run(String... args) throws Exception { // 在应用程序启动时执行的任务 System.out.println("Command line runner executed..."); } }

简单使用

这两个接口的简单使用方式如下:

  1. 创建一个实现 SmartInitializingSingletonCommandLineRunner 接口的 Spring bean 类,并实现相应的方法。
  2. 将这个 bean 声明为 Spring 组件(通常使用 @Component 注解)。
  3. 在应用程序启动时,Spring Boot 会自动检测这些 bean 并调用相应的初始化方法。

例如,假设您有一个 SmartInitializingSingleton 和一个 CommandLineRunner 的实现类,当您启动 Spring Boot 应用程序时,它们将执行相应的初始化逻辑。

java
import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication public class MyApplication { public static void main(String[] args) { SpringApplication.run(MyApplication.class, args); } }

上述的示例展示了一个简单的 Spring Boot 应用程序,其中 MySmartInitializingSingletonBeanMyCommandLineRunner 会在应用程序启动时执行初始化操作。这些接口允许您在应用程序启动时执行各种自定义的初始化任务,以确保应用程序在启动时处于正确的状态。