1

善良な人。Mavenが管理する非常に単純なプロジェクトでクォーツとスプリングを使用しようとしています。mycronジョブクラスが含まれるモジュールに、ジョブがテキストと新しい日付を出力するのを確認するために、Javaメインクラスを含めました。これが私の春の設定です:

<!--Scheduling-->
<!--Job-->
    <bean id="projUpdater" class="org.springframework.scheduling.quartz.JobDetailBean">
        <property name="jobClass" value="com.myproject.utilscheduling.quartz.ProjUpdaterCronImpl" />
    </bean>
<!---End of Jobs-->
<!--Triggers-->
    <bean id="regularUpdateTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean">
        <property name="jobDetail" ref="projUpdater"/>
        <property name="cronExpression" value="30 1 * * * ?"/>
    </bean>
<!--End ofTriggers-->
<!--Scheduler Factory-->
<bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
    <property name="triggers">
        <list>
            <ref bean="regularUpdateTrigger"/>
        </list>
    </property>
</bean>
<!--End of Scheduler Factory-->
<!--End of Scheduling-->

これがジョブクラスです

public class ProjUpdaterCronImpl extends QuartzJobBean {

public ProjUpdaterCronImpl() {
}


protected void executeInternal (JobExecutionContext ctx) throws JobExecutionException {
    System.out.println("[JOB] " + new Date() + "hello");
}

}

こちらがメインクラスです

public class NewMain {

/**
 * @param args the command line arguments
 */
 public static void main(String[] args) {
    System.out.println("starting job");
 }

}

だから私の理解では、ジョブは1分30秒後に開始され、コンソールに投稿されます。私は間違っています。私は解決するカップルまたはエラーに直面したので、春の構成ファイルにはエラーがないので、安全に推測できます。それで、私は何を間違えたのですか、それとも何を忘れたのですか?

テスト駆動の方法で自分自身を強制しているので、2番目の懸念はどのようにcronジョブクラスをテストするのでしょうか?読んでくれてありがとう

4

2 に答える 2

1

あなたのcron式

<property name="cronExpression" value="30 1 * * * ?"/>

実際には、1 時間ごとに 1 分 30 秒後にトリガーが起動するように構成されています。

Zoidberg の提案を使用MethodInvokingJobDetailFactoryBeanすると、cron ジョブを POJO としてコーディングできるため、テストが容易になります。

于 2009-09-23T17:37:05.677 に答える
0

あなたの仕事の豆のためにこれを試してください。

<bean id="projUpdater" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
        <property name="targetObject" ref="registeredObject" />
        <property name="targetMethod" value="methodNameInObject" />
    </bean>

registeredObjectは、Spring構成のどこかに登録されているBeanです。そして、メソッドはそのオブジェクトに存在するメソッドです。

于 2009-09-23T17:22:08.453 に答える