Schedule eine Aufgabe mit Cron, die dynamische Aktualisierung ermöglicht

Ich benutze Sprint Boot 1.3, Spring 4.2

In dieser Klass

@Service
public class PaymentServiceImpl implements PaymentService {
    ....
    @Transactional
    @Override
    public void processPayment() {
        List<Payment> payments = paymentRepository.findDuePayment();
        processCreditCardPayment(payments);
    }
}

Ich möchte processPayment jeden x Moment anrufen.

Dieser x-Moment ist in einer Datenbank festgelegt. Der Benutzer kann es ändern.

So denke ich, dass ich keine Anmerkung verwenden kann.

Ich habe damit angefangen this

@EntityScan(basePackageClasses = {MyApp.class,     Jsr310JpaConverters.class})
@SpringBootApplication
@EnableCaching
@EnableScheduling
public class MyApp {

    @Autowired
    private DefaultConfigService defaultConfigService;

    public static void main(String[] args) {
        SpringApplication.run(MyApp.class, args);
    }

    @Bean
    public TaskScheduler poolScheduler() {
        SimpleAsyncTaskExecutor taskScheduler = new SimpleAsyncTaskExecutor();

        DefaultConfigDto defaultConfigDto = defaultConfigService.getByFieldName("payment-cron-task");
        String cronTabExpression = "0 0 4 * * ?";
        if (defaultConfigDto != null && !defaultConfigDto.getFieldValue().isEmpty()) {
            cronTabExpression = "0 0 4 * * ?";
        }

        appContext.getBean("scheduler");

        taskScheduler.schedule(task, new CronTrigger(cronTabExpression));
        return scheduler;
    }

Vielleicht ist es nicht der richtige Weg.

Irgendein Vorschlag

Weiß nicht, ob ich meinen Kontext erhalten soll, wenn ich eine Eigenschaft wie @ erstellen mus

@Autowired
ConfigurableApplicationContext context;

und danach in der Haupt

public static void main(String[] args) {
        context = SpringApplication.run(MyApp.class, args);
}

Antworten auf die Frage(2)

Ihre Antwort auf die Frage