Java Spring@Scheduled注释

Java Spring@Scheduled注释,java,spring,spring-mvc,cron,spring-scheduled,Java,Spring,Spring Mvc,Cron,Spring Scheduled,如何动态使用spring的@Scheduled注释 CronTrigger(String expression, TimeZone timeZone) 由于数据库中有多个时区,如何动态传递它们 CronTrigger(String expression, TimeZone timeZone) 我在代码中尝试了这一点: TimeZone timezone = null; String timezone1 = null; public SchedulerBean(String timezone

如何动态使用spring的@Scheduled注释

CronTrigger(String expression, TimeZone timeZone)

由于数据库中有多个时区,如何动态传递它们

CronTrigger(String expression, TimeZone timeZone)
我在代码中尝试了这一点:

TimeZone timezone = null;
String timezone1 = null;
public SchedulerBean(String timezone2) 
{
     this.timezone1 = timezone2;
  //constructor
}

@Scheduled(cron="0 0 8 * * ?", zone =timezone.getTimeZone(timezone1) ) //Error at this line
public void sendQuestionNotif() 
{
  //......code
}
这是我得到的错误

*Type mismatch: cannot convert from TimeZone to String*

请帮帮我。因为我想根据时区触发cron。TIA。

无法动态设置注释参数。您可以通过编程实现,如下所示

class Scheduler implements Runnable {
    public Scheduler(TaskScheduler scheduler, String timezone, String cron) {
        scheduler.schedule(this, new CronTrigger(cron, TimeZone.getTimeZone(timezone)));
    }

    @Override
    public void run() {
        //
    }
}

非常感谢你。如果我使用你的答案,那么我还需要在基于cron表达式的方法上使用@Scheduled(cron=“cronExpression”,Timezone Timezone)吗?不,你不需要。但是您可以从ContextName创建一个作为bean的调度器。您可以提供您得到的解决方案吗?这将对我和其他用户非常有帮助