我有基于Spring Boot的简单应用程序。
在此示例中,我不使用任何XML配置。
主要组件是sendKeys()
(使用隐式构造函数自动装配),它取决于实现appMain
的{{1}}。它会覆盖并定义dataCollector
,我希望在创建Spring容器后立即调用它。
根据文件:
“任何Spring管理的对象都可以实现该接口。然后,当ApplicationContext本身接收到启动和停止信号时,例如在运行时停止/重启场景,它会将这些调用级联到该上下文中定义的所有生命周期实现。 “
但是永远不会调用此LifecycleProcessor
方法。那么public void start()
是必须明确定义并向ApplicationContext发送的东西吗?容器启动时是不是总能完成?我认为它是容器生命周期的一部分,但似乎不是这样。那怎么办?
我需要一些与我的整个应用程序一起启动和停止的并行类似deamon的线程。这个LifecycleProcessor是我应该使用的,还是Spring中有更好的选择?
AppMain
start
DataCollector
start signal
答案 0 :(得分:0)
如果您需要并行线程用于后台作业,那么您应该创建它。根据您的要求,线程可以是daemon
。如果您不需要等到线程完成其工作,您可以将其指定为deamon,并在关闭应用程序后 - 此线程将在没有超时的情况下中断。
示例:
class BackgroundJob extends Thread {
public BackgroundJob(boolean daemon) {
setDaemon(daemon);
}
//others logic
}