作者回复: 好像目前主流的Serverless平台都是使用自已的SDK的,只需写业务逻辑即可。我们是不是可以换个思路,你想要的是在需要生成文件时才创建你的服务,我们可以在收到消息后调用云平台API创建生成文件服务,待执行完毕后再自己回收资源。这时你要自己来申请和释放资源。
作者回复: 1. 它是有顺序的,你可以去看看SpringApplication.exit(),先是你给的参数,然后是Spring上下文里的。一个个跑,最后留下的要满足这个条件(value > 0 && value > exitCode || value < 0 && value < exitCode) 2. 发布出去之后,如果有人关心这个状态就可以去监听它,做些ShutdownHook的事情。
作者回复: 因为我们实现了ApplicationContextAware接口,Spring看到这个接口,会调用setApplicationContext()的
作者回复: crontab+命令,那就和Spring没什么关系了,那个是Linux自己的定时运行了。 我觉得定时任务可以重入,有幂等处理就是对这个任务的基本要求,就算不是执行到一半遇到发布,你也有可能遇到执行到一半机器Crash。设计时就要考虑任务被中断的情况。
作者回复: 命令行结束时,获取到的exitCode就是你设置的了,Linux里的进程结束都会返回这个值的。
作者回复: SpringBoot会自己查找上下文里的CommandLineRunner和ApplicationRunner并执行的,并不是因为我们改了run。实际上我们例子里run传入的一直都是主类,你可以再仔细看看。
作者回复: 返回码是给外部调用者来用的,命令行返回0就知道你是成功运行的,不是0就有问题,Shell里就是靠这个来判断的。你当然可以把所有东西都写一起,但有时把代码合理拆分到多个类里,各司其职会更好维护点,它给你提供了这样的机制。