This commit is contained in:
mindol1004
2024-08-23 16:46:23 +09:00
parent f04d6df324
commit ade2aa0733
22 changed files with 240 additions and 263 deletions

View File

@@ -2,6 +2,8 @@ package com.spring.infra.quartz;
import javax.sql.DataSource;
import org.quartz.Job;
import org.quartz.Scheduler;
import org.quartz.spi.JobFactory;
import org.quartz.spi.TriggerFiredBundle;
import org.springframework.batch.core.configuration.JobRegistry;
@@ -9,9 +11,7 @@ import org.springframework.batch.core.configuration.support.JobRegistryBeanPostP
import org.springframework.beans.factory.config.AutowireCapableBeanFactory;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.lang.NonNull;
import org.springframework.scheduling.quartz.SchedulerFactoryBean;
import org.springframework.scheduling.quartz.SpringBeanJobFactory;
import org.springframework.transaction.PlatformTransactionManager;
import lombok.RequiredArgsConstructor;
@@ -30,12 +30,12 @@ public class QuartzConfig {
* @param jobRegistry ths Spring Batch Job Registry
* @return JobRegistry BeanPostProcessor
*/
// @Bean
// JobRegistryBeanPostProcessor jobRegistryBeanPostProcessor(JobRegistry jobRegistry) {
// var jobRegistryBeanPostProcessor = new JobRegistryBeanPostProcessor();
// jobRegistryBeanPostProcessor.setJobRegistry(jobRegistry);
// return jobRegistryBeanPostProcessor;
// }
@Bean
JobRegistryBeanPostProcessor jobRegistryBeanPostProcessor(JobRegistry jobRegistry) {
var jobRegistryBeanPostProcessor = new JobRegistryBeanPostProcessor();
jobRegistryBeanPostProcessor.setJobRegistry(jobRegistry);
return jobRegistryBeanPostProcessor;
}
/**
* Quartz Schedule Job 에 의존성 주입
@@ -45,13 +45,10 @@ public class QuartzConfig {
*/
@Bean
JobFactory jobFactory(AutowireCapableBeanFactory beanFactory) {
return new SpringBeanJobFactory(){
@Override
protected @NonNull Object createJobInstance(@NonNull final TriggerFiredBundle bundle) throws Exception {
var job = super.createJobInstance(bundle);
beanFactory.autowireBean(job);
return job;
}
return (TriggerFiredBundle bundle, Scheduler scheduler) -> {
Job job = beanFactory.createBean(bundle.getJobDetail().getJobClass());
beanFactory.autowireBean(job);
return job;
};
}
@@ -64,12 +61,12 @@ public class QuartzConfig {
* @throws Exception the exception
*/
@Bean
SchedulerFactoryBean schedulerFactoryBean(JobFactory jobFactory) throws Exception {
SchedulerFactoryBean schedulerFactoryBean(JobFactory jobFactory) {
var factory = new SchedulerFactoryBean();
factory.setSchedulerName("SampleProject-0.0.1");
factory.setQuartzProperties(quartzProperties.toProperties());
factory.setOverwriteExistingJobs(true); //Job Detail 데이터 Overwrite 유무
factory.setDataSource(dataSource); //Schedule 관리를 Spring Datasource 에 위임
factory.setOverwriteExistingJobs(true);
factory.setDataSource(dataSource);
factory.setTransactionManager(transactionManager);
factory.setJobFactory(jobFactory);
factory.setAutoStartup(true);