这里给出一个Spring执行Quartz的Job的情况:
这个支持 Quartz1.x 和 Quartz2.x 的Quartz的版本。
public interface Job extends State{
public void execute();
}
public class InitializeDataSourceMapJob implements Job {
private static final Logger LOGGER = LoggerFactory
.getLogger(InitializeDataSourceMapJob.class);
@Override
public void execute() {
if(LOGGER.isInfoEnabled()){
LOGGER.info(this.getClass().getName() +" start to work.");
}
}
}
spring的配置文件:
<!-- job start -->
<!-- 这里我指定 init-method="execute" 主要是希望这个job能在类在加载的过程中就被运行。你可以去掉。-->
<bean id="initializeDataSourceMapJob" class="test.job.impl.InitializeDataSourceMapJob"
init-method="execute"/>
<bean id="initializeDataSourceMapJobDetail"
class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
<property name="targetObject" ref="initializeDataSourceMapJob" />
<property name="targetMethod" value="execute" />
<property name="concurrent" value="false" />
</bean>
<bean id="initializeDataSourceMapJobCronTrigger"
class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">
<property name="jobDetail" ref="initializeDataSourceMapJobDetail" />
<property name="cronExpression" value="0 0/2 * * * ? *" />
</bean>
<bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
<property name="triggers">
<list>
<ref bean="initializeDataSourceMapJobCronTrigger" />
</list>
</property>
</bean>
<!-- job end -->