权益使用同步逻辑调整

This commit is contained in:
郭诚奇
2025-10-22 11:39:01 +08:00
parent 0e8eb041a3
commit 958cb4afea
2 changed files with 27 additions and 32 deletions

View File

@@ -4,17 +4,19 @@ import org.quartz.Scheduler;
import org.quartz.SchedulerException;
import org.quartz.impl.StdSchedulerFactory;
import org.quartz.spi.JobFactory;
import org.quartz.spi.TriggerFiredBundle;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.config.AutowireCapableBeanFactory;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
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 {
@Autowired
private ApplicationContext applicationContext;
@Bean
public Scheduler scheduler() throws SchedulerException {
@@ -22,17 +24,35 @@ public class QuartzConfig {
}
@Bean
public JobFactory jobFactory() {
SpringAwareJobFactory jobFactory = new SpringAwareJobFactory();
public SpringBeanJobFactory springBeanJobFactory(ApplicationContext applicationContext) {
AutowiringSpringBeanJobFactory jobFactory = new AutowiringSpringBeanJobFactory();
jobFactory.setApplicationContext(applicationContext);
return jobFactory;
}
@Bean
public SchedulerFactoryBean schedulerFactoryBean(JobFactory jobFactory) {
public SchedulerFactoryBean schedulerFactory(SpringBeanJobFactory jobFactory) {
SchedulerFactoryBean factory = new SchedulerFactoryBean();
factory.setJobFactory(jobFactory); // 关键:使用我们自定义的 JobFactory
// 可设置其它属性,如数据源
factory.setJobFactory(jobFactory); // 关键配置
// 可根据需要设置其它属性,如 dataSource、事务管理器
return factory;
}
// 自定义 JobFactory支持 Spring Autowire
public static class AutowiringSpringBeanJobFactory extends SpringBeanJobFactory implements ApplicationContextAware {
private transient AutowireCapableBeanFactory beanFactory;
@Override
public void setApplicationContext(ApplicationContext applicationContext) {
this.beanFactory = applicationContext.getAutowireCapableBeanFactory();
}
@Override
protected Object createJobInstance(TriggerFiredBundle bundle) throws Exception {
Object job = super.createJobInstance(bundle);
beanFactory.autowireBean(job); // 关键:让 job 的 @Autowired 生效
return job;
}
}
}

View File

@@ -1,25 +0,0 @@
package com.ebiz.component.job.config;
import org.quartz.spi.TriggerFiredBundle;
import org.springframework.beans.factory.config.AutowireCapableBeanFactory;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
import org.springframework.scheduling.quartz.SpringBeanJobFactory;
public class SpringAwareJobFactory extends SpringBeanJobFactory implements ApplicationContextAware {
private transient AutowireCapableBeanFactory beanFactory;
@Override
public void setApplicationContext(ApplicationContext applicationContext) {
this.beanFactory = applicationContext.getAutowireCapableBeanFactory();
}
@Override
protected Object createJobInstance(TriggerFiredBundle bundle) throws Exception {
final Object job = super.createJobInstance(bundle);
// 让 job 也由 Spring 进行依赖注入
beanFactory.autowireBean(job);
return job;
}
}