我需要在服务器启动后立即运行一些代码。我使用ServletContextListener,它运行良好,但是...它在服务器启动之前运行代码。因为我得到了服务器上的超时异常,因为它无法启动,因为我的方法仍在运行。增加超时时间毫无意义,因为此方法需要大约1小时。我该怎么办?春季4 - 服务器启动后的运行方法
2
A
回答
2
您可以使用ApplicationListener
public class MyApplicationListener implements ApplicationListener<ContextRefreshedEvent> {
public void onApplicationEvent(final ContextRefreshedEvent event) {
ApplicationContext ctx = event.getApplicationContext();
(new Thread() {
public void run() {
// do stuff
}
}).start();
}
}
只需注册,作为一个Spring bean。正如评论中所建议的那样,您可以在另一个线程上执行代码。
3
为了更清晰起见,您可以这样做@PostConstruct。把下面的代码放在你配置spring中定义的singleton bean的任何一个中。有关更多细节,请阅读Postconstruct的工作原理和方式。这应该可以帮助您在服务器启动后加载异步。
public class singletonBeanConfig{
SimpleAsyncTaskExecutor simpleAsyncTaskExecutor = new SimpleAsyncTaskExecutor();
private class SampleConfigurator implements Runnable {
@Override
public void run() {
// run you process here.
}
}
@PostConstruct
public final void initData() {
// this will be executed when the config singleton is initialized completely.
this.simpleAsyncTaskExecutor.execute(new SampleConfigurator());
}
}
相关问题
- 1. 春季服务器启动事件
- 2. 春季安全春季启动4.x
- 3. 春季启动注册服务器(尤里卡服务器)
- 4. 错误,同时启动春季启动尤里卡服务器
- 5. 春季启动内置tomcat服务器不启动
- 6. 春季启动+春季LDAP +服务帐户+错误凭证
- 7. 服务索引页与春季启动
- 8. 春季启动失败与REST服务
- 9. REST API和Web服务春季启动
- 10. 春季启动SOAP Web服务与MVC
- 11. 不能在春季启动服务
- 12. 测试不后的IntelliJ自动启动春季服务
- 13. 春季启动/春云 - 尤里卡服务器
- 14. 春季工具套件vs intellij运行春季启动项目
- 15. 候补MVN春季启动:运行
- 16. 春季启动Maven插件 - 春季启动:运行和正常关机
- 17. 春季启动启动器安全邮政方法不工作
- 18. 春季启动应用程序将无法在Tomcat服务器上启动
- 19. 不支持请求方法'POST'。 500内部服务器错误春季启动
- 20. 春季启动如何调用方法
- 21. 部署Maven的春季启动项目的服务器离线
- 22. 在春季启动器
- 23. 春季启动Activiti执行
- 24. 在春季4
- 25. @Repository春季4
- 26. 春季启动 - 启动
- 27. 春季启动服务器不断打Postgres连接限制
- 28. 春季启动1.4.2.RELEASE与尤里卡服务器 - 例外:org.springframework.beans.factory.NoSuchBeanDefinitionException
- 29. 春季启动尤里卡服务器仪表板错误
- 30. 春季启动,如何访问码头服务器实例?
如果问题是该方法需要1小时才能执行,请在不同的线程中异步运行它。 – 2015-02-09 17:49:29
这不是问题。问题是如何告诉Spring在服务器启动时执行此代码。 – user2455862 2015-02-09 17:58:40
你可以在@PostConstruct注释的方法中运行它吗?您可以通过从注释方法调用runnable来异步运行它。 – minion 2015-02-09 18:21:35