我正在创建一个监视文件的服务,一旦文件可用,它就会将其加载到db。一旦这项工作完成,我想要优雅地关闭应用程序。
但当我使用context.close时,它会抛出异常(尽管应用程序会关闭),但我想关闭它,而不会导致任何异常。
@profile("non-test")
class Manager implements ApplicationContextAware{
@PostConstruct
public void init()
{
//watch for file and as soon as file is available invokde trigger()
}
public void trigger()
{
//load to db
shutodown()
}
public void shutdown()
{
SpringApplication.exit(context);
}
}当我调用shutdown时,它抛出下面的异常。AnnotationConfigApplicationContext已关闭
我希望应用程序能够优雅地关闭,没有任何异常。
发布于 2019-08-02 19:32:28
你的问题很可能是Spring依赖的存在,这使得你的应用程序存活了很长时间。这种依赖性例如是spring-boot-starter-web。这个启动器包括Servlet容器,作为依赖,Spring将在默认情况下永远运行。
如果类路径上没有这样的依赖项,那么Spring Boot应用程序将自动关闭(不需要任何特殊的操作来终止它)。我建议你看看Spring guides for batch job的一些内容。
https://stackoverflow.com/questions/57325360
复制相似问题