是否可以在弹簧启动应用程序旋转时停止它?
我的软件需要在启动时验证许可证。如果许可证不存在或无效,应用程序将关闭。实际验证发生在@PostConstruct
的{{1}}。
我目前的方式是:
@Service
但是这个解决方案感觉很糟糕。有没有解决方案我可以在不调用REST端点的情况下停止Spring启动应用程序?
答案 0 :(得分:4)
假设您的代码位于组件中(或者Spring检测到的bean)。您可以简单地注入ApplicationContext
,然后退出调用close
。
public class LicenseChecker {
@Autowired
private ApplicationContext ctx;
public void check() {
if (!exist || !valid) {
((ConfigurableApplicationContext) ctx).close();
System.exit(1);
}
}
}
答案 1 :(得分:-2)
您可以使用"关闭"端点关闭您的应用程序。
@Component
public class LicenseChecker implements CommandLineRunner{
@Autowired
ShutdownEndpoint shutdownEndpoint;
@Override
public void run(String... strings) throws Exception {
System.out.println("Checking License ");
if(!checkLicense()){
System.out.println("Shutting down application");
shutdownEndpoint.invoke();
}
}
private boolean checkLicense(){
// check license
return false;
}
}