App*_*ler 0 java spring runnable spring-boot
我试图找到一种在Spring启动中创建优美的Runnable bean的方法。该应用程序的重点是提供一项服务,该服务将接收一些数据并启动受监视的外部过程。
在之前的尝试中,我只是形成一个常规new MyRunnable()并将其传递给执行服务。现在,我正在考虑如何在Spring环境中正确使用并使用@Scope("prototype")。
我确实找到了使用的示例,ApplicationContext.getBean(...)以及为什么Spring的ApplicationContext.getBean被认为是不好的更好的方法?,但我仍然无法正确理解如何new MyRunnable()根据一项服务来实际调用,这将遵循以下简单思想:
class MyService {
public void triggerNewExternalTask() {
....
executionService.run(new MyRunnable());
Run Code Online (Sandbox Code Playgroud)
我相信您在这里走错了路。
Spring依赖项注入非常棒,但这并不意味着您永远不会new在编写正确的Spring Boot应用程序中找到对它的调用。
在这种情况下,调用new是正确的选择。启动时,Executor池中的每个实例都应具有自己的Runnable/ 实例Callable。
这对于任何方法范围的变量都是如此:最好在方法范围内实例化它,并在退出方法时让垃圾回收器将其清除。在这种情况下,没有理由让Spring负责bean的生命周期。
当您尝试共享Runnable实例时,您走得太远了,尤其是当它们具有状态时。
| 归档时间: |
|
| 查看次数: |
134 次 |
| 最近记录: |