面试官:如何在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应用的启动流程。

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-14 22:04:04       70 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-14 22:04:04       74 阅读
  3. 在Django里面运行非项目文件

    2024-07-14 22:04:04       62 阅读
  4. Python语言-面向对象

    2024-07-14 22:04:04       72 阅读

热门阅读

  1. 一劳永逸:彻底解决PyCharm中gcc编译器错误

    2024-07-14 22:04:04       17 阅读
  2. TestNG测试框架入门与实践

    2024-07-14 22:04:04       19 阅读
  3. OJ-0710

    2024-07-14 22:04:04       17 阅读
  4. throw 和throws的区别详解

    2024-07-14 22:04:04       20 阅读
  5. Springboot中Aop的使用案列

    2024-07-14 22:04:04       20 阅读
  6. 计算机网络——常见问题汇总2

    2024-07-14 22:04:04       18 阅读
  7. helm系列之-使用helm部署应用

    2024-07-14 22:04:04       20 阅读
  8. A. Only Pluses

    2024-07-14 22:04:04       21 阅读
  9. 质量小议40 -- 合格

    2024-07-14 22:04:04       21 阅读
  10. IOS热门面试题(二)

    2024-07-14 22:04:04       20 阅读
  11. KVM-QEMU

    KVM-QEMU

    2024-07-14 22:04:04      14 阅读