@Test public void test() { final ApplicationContextFactory factory = mock(ApplicationContextFactory.class); final Iterable<ApplicationContextFactory> factories = Arrays.asList(factory); final AutomaticJobRegistrar jobRegistrar = mock(AutomaticJobRegistrar.class); final ServiceJobFactoryRegistrar registrar = new ServiceJobFactoryRegistrar(jobRegistrar) { @Override protected Iterable<ApplicationContextFactory> lookupServices() { return factories; } }; registrar.registerJobFactories(); verify(jobRegistrar).addApplicationContextFactory(factory); }
@Bean public AutomaticJobRegistrar jobRegistrar(JobRegistry jobRegistry) throws Exception { AutomaticJobRegistrar registrar = new AutomaticJobRegistrar(); registrar.setJobLoader(new DefaultJobLoader(jobRegistry)); for (ApplicationContextFactory factory : applicationContext.getBeansOfType(ApplicationContextFactory.class).values()) { registrar.addApplicationContextFactory(factory); } return registrar; }
@PostConstruct public void registerJobFactories() { final Iterable<ApplicationContextFactory> providers = lookupServices(); final List<ApplicationContextFactory> factories = StreamSupport.stream(providers.spliterator(), false).collect(Collectors.toList()); LOG.info("Registering {} JobFactories", factories.size()); factories.forEach(factory -> { LOG.info("Registering JobFactory: {}", factory); jobRegistrar.addApplicationContextFactory(factory); }); }
@Bean public ApplicationContextFactory job1() { return new GenericApplicationContextFactory(JobConfig.class); }
protected Iterable<ApplicationContextFactory> lookupServices() { return ServiceLoader.load(ApplicationContextFactory.class); }
@Bean public ApplicationContextFactory testJobFactory() { return new GenericApplicationContextFactory(TestJobConfig.class); }