Java Spring引导退出代码生成器-实现不工作
我意识到在这个话题上有几个类似的未解决的问题,所以,我在这里加入了一个,这样就可以很容易地重现问题场景 场景 我正试图根据Spring Boot实现一个Spring Boot退出代码生成器。看起来Spring Boot正在调用退出代码生成器,但应用程序退出时代码为0,而不是给定的退出代码。我错过了什么Java Spring引导退出代码生成器-实现不工作,java,spring-boot,groovy,Java,Spring Boot,Groovy,我意识到在这个话题上有几个类似的未解决的问题,所以,我在这里加入了一个,这样就可以很容易地重现问题场景 场景 我正试图根据Spring Boot实现一个Spring Boot退出代码生成器。看起来Spring Boot正在调用退出代码生成器,但应用程序退出时代码为0,而不是给定的退出代码。我错过了什么 @SpringBootApplication @Configuration @Slf4j class App implements CommandLineRunner { @Autowi
@SpringBootApplication
@Configuration
@Slf4j
class App implements CommandLineRunner {
@Autowired ConfigurableApplicationContext ctx
static void main(String[] args) {
SpringApplication.run(App.class, args)
}
@Override
void run(String... args) throws Exception {
SpringApplication.exit(ctx, new ExitCodeGenerator() {
@Override
int getExitCode() {
log.info 'retrieving exit code.'
return -1
}
})
}
}
输出:
C:\Users\pc\IdeaProjects\spring-exit-code-gen>gradlew bootRepackage
C:\Users\pc\IdeaProjects\spring-exit-code-gen>java -jar build/libs/spring-exit-code-gen-1-0.0.1-SNAPSHOT.jar
2017-09-13 12:26:53.819 INFO 2832 --- [ main] com.scarlatti.App : Starting App on pc-PC with PID 2832 (C:\Users\pc\IdeaProjects\spring-exit-code-gen\build\libs\spring-exit-code-gen-1-0.0.1-SNAPSHOT.jar started by pc in C:\Users\pc\IdeaProjects\spring-exit-code-gen\build\libs)
2017-09-13 12:26:53.824 INFO 2832 --- [ main] com.scarlatti.App : No active profile set, falling back to default profiles: default
2017-09-13 12:26:53.966 INFO 2832 --- [ main] s.c.a.AnnotationConfigApplicationContext : Refreshing org.springframework.context.annotation.AnnotationConfigApplicationContext@2752f6e2: startup date [Wed Sep 13 12:26:53 CDT 2017]; root of context hierarchy
2017-09-13 12:26:54.924 INFO 2832 --- [ main] o.s.j.e.a.AnnotationMBeanExporter : Registering beans for JMX exposure on startup
2017-09-13 12:26:54.962 INFO 2832 --- [ main] com.scarlatti.App : retrieving exit code.
2017-09-13 12:26:54.963 INFO 2832 --- [ main] s.c.a.AnnotationConfigApplicationContext : Closing org.springframework.context.annotation.AnnotationConfigApplicationContext@2752f6e2: startup date [Wed Sep 13 12:26:53 CDT 2017]; root of context hierarchy
2017-09-13 12:26:54.964 INFO 2832 --- [ main] o.s.j.e.a.AnnotationMBeanExporter : Unregistering JMX-exposed beans on shutdown
2017-09-13 12:26:54.969 INFO 2832 --- [ main] com.scarlatti.App : Started App in 1.945 seconds (JVM running for 3.132)
C:\Users\pc\IdeaProjects\spring-exit-code-gen>echo %ERRORLEVEL%
0
要尝试它。因为您需要调用系统。退出并返回调用SpringApplication.exit的结果。大概是这样的:
@Override
void run(String... args) throws Exception {
System.exit(SpringApplication.exit(ctx, new ExitCodeGenerator() {
@Override
int getExitCode() {
log.info 'retrieving exit code.'
return -1
}
}))
}
非常感谢你!不知怎的,那个文档页我找不到。我们必须用这段代码调用System.exit(),这非常合理!谢谢使用lambda:System.exit(SpringApplication.exit(context,()->-1))代码>