2
<bean name="MyJob" class="org.springframework.scheduling.quartz.JobDetailFactoryBean">
    <property name="jobClass" value="com.package.scheduler.MyJob"/>
        <property name="jobDataAsMap">
            <map>
                <entry key="numArr" value="10,20,30"/>
            </map>
        </property>
</bean>

これを午前 1 時 30 分に実行する Quartz ジョブが定義されています。問題は、この配列定義が機能しないことです

<entry key="numArr" value="10,20,30"/>

代わりにリストを使用する必要がありました。Quartz ジョブが開始されるまで Bean は初期化されず、午前 1 時 30 分にコーディングする可能性は低いため、このエラーをローカルでキャッチすることはできません。現時点で唯一の方法は、Quartz ジョブの実行時間を変更して強制的に実行することです。ローカル dev で実行しているときに、これらの Bean を起動時に強制的に初期化したいと考えています。これを行う方法はありますか?

4

1 に答える 1

0

可能であれば、あなたの Bean を Quartz の仕事から切り離します。次に、Spring 構成で Bean を個別に初期化できます。Quartz を認識する必要はありません。次に、スプ​​リングを使用MethodInvokingJobDetailFactoryBeanして、分離されたオブジェクトのメソッドを呼び出します。

たとえば、次のようなものです。

<bean id="myBean class="...">
    <property name="numArr" value="10,20,30"/>
</bean>

<bean id="myJob"
      class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
     <property name="targetObject" ref="myBean" />
     <property name="targetMethod" value="doSomething" />
</bean>

<bean id="staleTraderRatesTrigger"
      class="org.springframework.scheduling.quartz.CronTriggerBean">
    <property name="jobDetail" ref="myJob" />
    <property name="cronExpression" value="0 30 1 * * ?" />
</bean>
于 2013-03-18T14:35:37.487 に答える