如何将数据传递给作为MethodInvokingJobDetailFactoryBean运行的方法?

| 我真正想做的是创建一个不会同时运行的Quartz作业,但也可以访问ѭ0以获取ѭ1。这是我的对象:
// imports...

public class UtilityObject {

    private SomeService someService;

    @Autowired
    public UtilityObject(SomeService someService) {
        this.someService = someService;
    }

    public void execute(JobExecutionContext ctx) throws JobExecutionException {
        Date prevDate = ctx.getPreviousFireTime();

        // rest of the code...
    }
}
这就是我配置bean的方式:
<bean name=\"utilityBean\" class=\"UtilityObject\" />

<bean id=\"utilityJob\"
    class=\"org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean\">
   <property name=\"targetOjbect\" ref=\"utilityBean\" />
   <property name=\"targetMethod\" value=\"execute\" />
   <property name=\"concurrent\" value=\"false\" />
</bean>

<bean name=\"utilityTrigger\"
    class=\"org.springframework.scheduling.quartz.SimpleTriggerBean\">
    <property name=\"jobDetail\" ref=\"utilityJob\" />
    <property name=\"startDelay\" value=\"5000\" />
    <property name=\"repeatInterval\" value=\"20000\" />
</bean>
当我尝试运行此命令时,它在使用以下命令创建Bean的过程中失败   NoSuchMethodException:UtilityJob.execute() 有任何想法吗? 解: 阅读了skaffman的答案后,我能够使我的解决方案正常工作。使用我拥有的触发器,我知道名称是,并且知道默认组为\'DEFAULT \'。我让我的班级扩展了
QuartzJobBean
类,然后添加了以下代码:
protected void executeInternal(JobExecutionContext ctx) 
               throws JobExecutionException {
    boolean isRunning = 
           (ctx.getScheduler().getTriggerState(\"utilityTrigger\", \"DEFAULT\") ==
               Trigger.STATE_BLOCKED);

    if (isRunning) {
        // run the job
    }
} 
对不起,格式怪异;这些是长队!     
已邀请:
MethodInvokingJobDetailFactoryBean
很方便,但是很原始-它只能执行不带参数的公共方法。 如果您的工作需要访问Quartz API,那么您将需要使用
JobDetailBean
QuartzJobBean
而不是
MethodInvokingJobDetailFactoryBean
。有关说明,请参阅文档。 runs4ѭ运行时会被当前的
JobExecutionContext
传递。     
可以使用arguments属性以与弹簧
MethodInvokingFactoryBean
相同的方式将参数传递给
MethodInvokingJobDetailFactoryBean
。 例如:
<bean id=\"myJob\"
      class=\"org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean\">
    <property name=\"targetObject\" ref=\"myBean\" />
    <property name=\"targetMethod\" value=\"myMethod\" />
    <property name=\"arguments\">
        <list>
            <value>greetings</value>
            <ref bean=\"anotherBean\"/>
        </list>
    </property>
</bean>
    

要回复问题请先登录注册