因为之前的elasjob一直都是用xml配置的,在自己的任务当中,可以注入spring的组件。
后来在一次用springboot集成elasticjpb的时候,采用了javaAPI的方式开发job,结果就是:
javaAPI方式的job中不能注入spring 的组件,获取的值都是null
@Override
public void afterPropertiesSet() throws Exception {
JobEventConfiguration jobEventRdbConfig = new JobEventRdbConfiguration(act.getBean(DynamicDataSource.class));
new JobScheduler(regCenter(), liteJobConfig(), jobEventRdbConfig).init();
}
private CoordinatorRegistryCenter regCenter() {
CoordinatorRegistryCenter regCenter = new ZookeeperRegistryCenter(
new ZookeeperConfiguration(zkHost, namespace));
regCenter.init();
return regCenter;
}
private LiteJobConfiguration liteJobConfig() {
// 创建作业配置
// 定义作业核心配置
JobCoreConfiguration coreConfig = JobCoreConfiguration.newBuilder("javaFindJobTask", cron, 3)
.shardingItemParameters("0=A,1=B,2=C").build();
// 定义SIMPLE类型配置
SimpleJobConfiguration jobConfig = new SimpleJobConfiguration(coreConfig,
JavaFindJobTask.class.getCanonicalName());
// 定义Lite作业根配置
LiteJobConfiguration simpleJobRootConfig = LiteJobConfiguration.newBuilder(jobConfig).overwrite(false)
.reconcileIntervalMinutes(10).build();
return simpleJobRootConfig;
}
可以看出,
// 定义SIMPLE类型配置
SimpleJobConfiguration jobConfig = new SimpleJobConfiguration(coreConfig,
JavaFindJobTask.class.getCanonicalName());
只注入了当前job,并没有注入其依赖的spring组件,这算是elasticjob的bug么?
如果哪位同志解决了,请留个言哈。