Spring 引导批处理作业 - 退出 codes/Return 代码

Spring boot batch jobs - Exit codes/Return codes

我在外部 Tomcat 上部署了一个 Spring 启动批处理应用程序。预期是 shell 脚本应该调用批处理作业和 return 退出代码(成功时为 0,失败时为非零)。我在下面实现了,但即使批处理失败,我在 shell 脚本中得到 0 return 代码。想知道什么是 Spring 推荐的管理这些错误代码的方法。请推荐

if (jobExecution.getStatus() == BatchStatus.COMPLETED) {
            jobExecution.setExitStatus(new ExitStatus("0"));
        } else {
            jobExecution.setExitStatus(new ExitStatus("1"));
        }  

The expectation is shell script should call batch jobs and return exit code (0 in case of success and non-zero in case of failure)

如果您 运行 您的应用具有以下条件,则这应该是默认设置:

    System.exit(SpringApplication.exit(SpringApplication.run(MyApplication.class, args)));

如果要自定义退出代码,需要定义一个ExiteCodeGenerator。这是一个例子:

@SpringBootApplication
public class ExitCodeApplication {

   @Bean
   public ExitCodeGenerator exitCodeGenerator() {
      return () -> 42;
   }

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

}

您可以在 reference documentation 中找到更多详细信息。