Spring boot计划在几个月和特定日期付款

时间:2018-04-09 10:43:08

标签: java spring cron schedule

在Spring启动应用程序中安排任务是我的新手。我已经阅读了几篇关于它的帖子,但无法将它们放在一起。 在我的情况下,客户将他的付款日期从某个日期,他的付款日期设置为将来的某个日期和月份的付款日期,例如每月25日。 因此,如果我将日期设置为01-04-2018 - 30-08-2018并且每25天支付一天,我的计划任务应该每月25日执行一次,如25-04,25-05,25-06 ,25-07和25-08。我将在下面发布我的实体模型。我无法为此写任何工作服务。请帮忙。

@Column(name = "name")
private String name;
@Column(name = "amount")
private BigDecimal amount;
@Column(name = "outcome")
private Boolean outcome;
@Column(name = "currency")
@Convert(converter = CurrencyConverter.class)
private Currency currency;
@Column(name = "comment")
private String comment;
@Column(name = "dimension")
@Convert(converter = DimensionConverter.class)
private Dimension dimension;
@Column(name = "type_id")
@Convert(converter = ExpenseTypeConverter.class)
private ExpenseType expenseType;


@Column(name = "finished_payment", nullable = true)
private Boolean finishedExpense;


@Column(name = "period_from", nullable = true)
@JsonFormat(shape=JsonFormat.Shape.STRING, pattern="dd-MM-yyyy")
private Date periodFrom;
@Column(name = "period_to", nullable = true)
@JsonFormat(shape=JsonFormat.Shape.STRING, pattern="dd-MM-yyyy")
private Date periodTo;
@Column(name = "pay_day", nullable = true)
private int payDay;

1 个答案:

答案 0 :(得分:0)

在Spring Boot中使用 @EnableScheduing ..

@Scheduled(fixedDelay = 300000)
//300000=5 mins.
public void startQuery(){
    try{
        /Schedule something here
    }catch(Exception e){

    }
}

您也可以使用 Cron 表达式代替 fixedDelay
对于您的用例,您应该使用 Quartz + Spring boot 。在这里阅读文档.. https://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-quartz.html