Merge pull request #46 from yavuztas/38-the-lifecycle-f-spring-beans

38 the lifecycle f spring beans
This commit is contained in:
Tom Hombergs
2020-08-11 06:49:17 +10:00
committed by GitHub
4 changed files with 68 additions and 5 deletions

View File

@@ -5,6 +5,7 @@ import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.scheduling.quartz.SchedulerFactoryBean;
import org.springframework.scheduling.quartz.SpringBeanJobFactory;
@Configuration
public class QuartzConfig {
@@ -12,17 +13,20 @@ public class QuartzConfig {
@Autowired
ApplicationContext applicationContext;
@Bean
public SpringBeanJobFactory springBeanJobFactory() {
AutowireCapableJobFactory jobFactory = new AutowireCapableJobFactory();
jobFactory.setApplicationContext(applicationContext);
return jobFactory;
}
/**
* Create custom {@link SchedulerFactoryBean} for Quartz
*/
@Bean
public SchedulerFactoryBean schedulerFactoryBean(){
AutowireCapableJobFactory jobFactory = new AutowireCapableJobFactory();
jobFactory.setApplicationContext(applicationContext);
SchedulerFactoryBean factoryBean = new SchedulerFactoryBean();
factoryBean.setJobFactory(jobFactory);
factoryBean.setJobFactory(springBeanJobFactory());
return factoryBean;
}

View File

@@ -0,0 +1,16 @@
package io.reflectoring.beanlifecycle.quartz;
import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.springframework.beans.factory.annotation.Autowired;
public class SampleJob implements Job {
@Autowired
private SampleServiceBean service;
@Override
public void execute(JobExecutionContext jobExecutionContext) {
service.hello();
}
}

View File

@@ -0,0 +1,16 @@
package io.reflectoring.beanlifecycle.quartz;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Service;
@Service
public class SampleServiceBean {
Logger logger = LoggerFactory.getLogger(SampleServiceBean.class);
public void hello() {
logger.info("hello from Quartz Job!");
}
}

View File

@@ -0,0 +1,27 @@
package io.reflectoring.beanlifecycle.quartz;
import org.junit.jupiter.api.Test;
import org.quartz.*;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
@SpringBootTest
public class SpringQuartzTests {
@Autowired
Scheduler quartzScheduler;
@Test
public void testQuartzJobHasCapabaleOfAutowireSpringBeans() throws SchedulerException, InterruptedException {
JobDetail jobDetail = JobBuilder.newJob(SampleJob.class).build();
Trigger trigger = TriggerBuilder.newTrigger()
.withSchedule(SimpleScheduleBuilder.repeatSecondlyForever())
.startNow().build();
quartzScheduler.scheduleJob(jobDetail, trigger);
Thread.sleep(5000);
}
}