<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运行。问题是这个数组定义不起作用
<entry key="numArr" value="10,20,30"/>
我们不得不使用列表。由于bean在石英作业开始之前没有初始化,并且我们不太可能在凌晨1:30进行编码,因此我们无法在本地捕获此错误。现在唯一的办法就是改变石英作业的运行时间以强制它发生。当我们在本地开发时运行时,我们希望强制在启动时初始化这些bean。有没有办法做到这一点?
答案 0 :(得分:0)
如果可能的话,我会将你的bean与Quartz的工作分开。然后,您可以在弹簧配置中单独初始化bean,并且不需要了解Quartz。然后我会使用spring 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>