我们正在考虑优雅地关闭Spring启动应用程序的最佳方法。
我们正在使用boot的关闭端点和关闭挂钩来获取关闭时的通知。
该应用程序是非常多线程的。它由多个类似管理器的类构成。其中一些类包含执行程序服务和/或kafka使用者。工作不会迷失是非常重要的。
我们希望构建一个简单的基础架构,以便每个类似管理器的类都实现一个“close”方法,该方法将在调用关闭端点时调用。当然,我们希望尽量减少重复。它也应该在没有启动的情况下进行测试(因此我们应该能够独立调用close方法)。
到目前为止,我们一直在考虑使用“close”方法定义一个接口,每个类都将实现。我们宁愿不使用抽象类来限制其他用途的继承。
注册关闭事件是我们陷入困境的地方。我们应该使用带注释的反射吗?然后我们必须记住实现接口,并为每个类添加注释。还 - 它有效吗?