Bootstrap

面试官:如何在SpringBoot启动时执行特定代码

1. 监听ApplicationContext事件
  • ContextRefreshedEvent:触发于ApplicationContext初始化或刷新后。
  • 使用场景
    • 执行一次性初始化操作。
    • 初始化或刷新缓存。
    • 与外部系统交互。
    • 执行与Spring Bean相关的初始化。
2. 实现CommandLineRunner接口
  • 自动执行实现了该接口的Bean的run方法。
  • 使用场景
    • 命令行参数处理。
    • 应用启动后的一次性操作。
3. 实现ApplicationRunner接口
  • 类似于CommandLineRunner,但接收ApplicationArguments参数。
  • 使用场景
    • 命令行参数解析。
    • 启动时初始化。
4. 使用@PostConstruct注解
  • 在Bean的依赖注入完成后调用标注此注解的方法。
  • 使用场景
    • 单个Bean初始化。
    • 资源初始化。
5. @Bean注解中指定初始化方法
  • 通过initMethod属性指定Bean的初始化方法。
  • 使用场景
    • 资源初始化。
    • Bean状态设置。
    • 缓存预热。
6. 实现InitializingBean接口
  • 重写afterPropertiesSet方法实现依赖注入后的初始化逻辑。
  • 使用场景
    • 资源初始化。
    • Bean状态设置。
7. 使用@EventListener注解
  • 监听ApplicationReadyEvent事件执行初始化逻辑。
  • 使用场景
    • 应用启动后执行一次性操作。
    • 等待所有Bean初始化后再执行。
总结
  • 根据项目需求和具体情况选择最适合的初始化方式。
  • 熟练掌握和灵活运用这些方法,优化Spring Boot应用的启动流程。
;