Merge pull request #46 from yavuztas/38-the-lifecycle-f-spring-beans
38 the lifecycle f spring beans
This commit is contained in:
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
}
|
||||
@@ -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!");
|
||||
}
|
||||
|
||||
}
|
||||
@@ -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);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user