Spring 应用开发注意事项

Laeni
2025-09-10

  • @Scheduled@Async 注解的异步方法在系统正常停止时不会等待其执行完毕后再停止。

    解决方案:

    对于 @Scheduled 可以使用 Spring Boot 原生支持的配置明确指定:

    spring:
      task:
        scheduling:
          shutdown:
            # 关闭时等待所有任务执行完毕
            await-termination: true
            # 注意: 必须要配置一个时间,否则不等待
            await-termination-period: 180s
    

    但上述方法并不适用于 @Async 注解的方法,对于 @Async 注解的方法只能使用其他方式,比如注册一个应用关闭回调,在回调里检测 @Async 任务的执行情况,当 @Async 方法执行完毕后才让回调方法结束即可(回调方法是一定会等待其执行完毕后才会停机的)。

参考文档


发现错误或想为文章做出贡献? 在 GitHub 上编辑此页面!
© 2020-2025 All Right Reserved 滇ICP备17005647号-2