NOTE: This suggestion is for Confluence Server. Using Confluence Cloud? See the corresponding suggestion.
Currently job plugin modules are not dependency-injected (or "autowired"). They are instantiated by Quartz directly instead, because the module descriptor constructs the JobDetail bean this way:
JobDetail jobDetail = new JobDetail(); jobDetail.setGroup(getPluginKey()); jobDetail.setName(getKey()); jobDetail.setJobClass(getModuleClass()); JobDataMap jobDetailMap = new JobDataMap(); jobDetailMap.put("runOncePerCluster", String.valueOf(perClusterJob)); jobDetail.setJobDataMap(jobDetailMap); return jobDetail;
Although I haven't tested it, it should be possible to construct a delegating job class and pass the autowired plugin Job to it via the JobDataMap. I think this is how the MethodInvokingJobDetailFactoryBean works in Spring.
- relates to
CONFCLOUD-20162 Autowire job plugin modules
- mentioned in