Spring “春天”;SchedulerFactoryBean";推翻「;jobstore";属性值

Spring “春天”;SchedulerFactoryBean";推翻「;jobstore";属性值,spring,spring-boot,quartz-scheduler,Spring,Spring Boot,Quartz Scheduler,如果您使用的是Spring的SchedulerFactoryBean,它将覆盖属性文件中配置的值。 因此,如果您试图使用JobStoreTx,它总是被spring中的LocalDataSourceJobStore覆盖 下面的代码片段显示了SchedulerFactoryBean中的部分。我已经克服了它使用定制 if (this.dataSource != null) { mergedProps.setProperty(StdSchedulerFactory

如果您使用的是Spring的SchedulerFactoryBean,它将覆盖属性文件中配置的值。 因此,如果您试图使用JobStoreTx,它总是被spring中的LocalDataSourceJobStore覆盖

下面的代码片段显示了SchedulerFactoryBean中的部分。我已经克服了它使用定制

        if (this.dataSource != null) {
            mergedProps.setProperty(StdSchedulerFactory.PROP_JOB_STORE_CLASS, LocalDataSourceJobStore.class.getName());
        }

使用
@QuartzDataSource
应该像注释中提到的@nonzaprej那样处理问题

下面是我如何使用自定义程序重写该值的

@Component
public class SchedulerFactoryCustomizer implements SchedulerFactoryBeanCustomizer {
使用自定义方法

    @Override
    public void customize(SchedulerFactoryBean schedulerFactoryBean) {
        schedulerFactoryBean.setDataSource(dataSource);
    }

使用
@QuartzDataSource
应该像注释中提到的@nonzaprej那样处理问题

下面是我如何使用自定义程序重写该值的

@Component
public class SchedulerFactoryCustomizer implements SchedulerFactoryBeanCustomizer {
使用自定义方法

    @Override
    public void customize(SchedulerFactoryBean schedulerFactoryBean) {
        schedulerFactoryBean.setDataSource(dataSource);
    }

你能写下(也许是为了回答你自己的“问题”,我已经做了好几次)你用来解决这个问题的代码吗?我也在使用一个定制器,但我不知道如何让bean使用我想要的JobStore类。我知道已经很晚了,但是……无论如何,我已经通过一个带有
@QuartzDataSource
注释的
@Bean
提供了数据源,从而解决了这个问题。如果数据源不是在工厂bean上“手动”设置的,Quartz将正确使用您配置的JobStore类。很抱歉,回复太晚。我认为你的评论很有道理,但我面临另一个问题,因为我的案例中的数据源是提供给我的应用程序的,我没有办法覆盖它。所以一个
SchedulerFactoryBeanCustomizer
解决了我的问题,你能写下你解决这个问题的代码吗?我也在使用一个定制器,但我不知道如何让bean使用我想要的JobStore类。我知道已经很晚了,但是……无论如何,我已经通过一个带有
@QuartzDataSource
注释的
@Bean
提供了数据源,从而解决了这个问题。如果数据源不是在工厂bean上“手动”设置的,Quartz将正确使用您配置的JobStore类。很抱歉,回复太晚。我认为你的评论很有道理,但我面临另一个问题,因为我的案例中的数据源是提供给我的应用程序的,我没有办法覆盖它。因此,
SchedulerFactoryBeanCustomizer
解决了我的问题