在我的Spring Batch Application中,我希望根据抛出的Exception返回不同的退出代码。
因此,我遵循以下文档:https://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#features.spring-application.application-exit
并在我的异常中实现了ExitCodeGenerator:
class MyCustomException(message: String) : RuntimeException(message), ExitCodeGenerator {
override fun getExitCode(): Int {
return 13
}
}
字符串
这个异常在一个tasklet中抛出,应用程序运行如下:
@SpringBootApplication
class MyApplication
fun main(args: Array<String>) {
exitProcess(
SpringApplication.exit(
runApplication<MyApplication>(*args)
)
)
}
型
但是当异常被抛出时,应用程序失败,退出代码为5。看起来步骤中的异常没有传播到检查异常退出代码的SpringApplication.run()。这个Sping Boot 功能与Spring批处理行为不兼容吗?或者我错过了什么?
1条答案
按热度按时间6uxekuva1#
在我的异常中实现ExitCodeGenerator
异常类型不应该是
ExitCodeGenerator
,而应该是相反的:ExitCodeGenerator
应该返回基于异常类型的退出代码。Sping Boot 会发出一个带有
JobExecution
的JobExecutionEvent
,所以你可以让你的自定义ExitCodeGenerator
成为这种类型事件的侦听器,比如:字符串
如果你运行这个应用程序,进程的退出代码应该是13。该项目是从start.spring.io生成的,带有这个链接。