JBoot在启动时会扫描类路径中是否存在JbootAppListenerBase类,如果有,则会初始化这个类,并执行其中的onJbootStarted方法(还有其它方法钩子,详见Jboot手册),因此可以通过继承JbootAppListenerBase类实现启动任务。
系统全局应该只有一个JbootAppListenerBase的实现类,经测试,Jboot只会启动其中一个,其它会被忽略。
如下在启动是同步启动了一个短信发送进程:
系统全局应该只有一个JbootAppListenerBase的实现类,经测试,Jboot只会启动其中一个,其它会被忽略。
如下在启动是同步启动了一个短信发送进程:
@Slf4j
public class StartListener extends JbootAppListenerBase {
/**
* jboot 启动完成后,启动短信发送线程
*/
@Override
public void onJbootStarted() {
SmsConfig config = Jboot.config(SmsConfig.class);
String clazz = config.getClazz();
try {
Thread sms = (Thread) Class.forName(clazz).newInstance();
sms.start();
} catch (Exception e){
log.error("短信进程异常", e);
System.exit(1);
}
}
}