1.由于基于maven项目管理,先在pom文件中添加quartz jar包依赖spring
<!-- quartz --> <dependency> <groupId>org.quartz-scheduler</groupId> <artifactId>quartz</artifactId> <version>2.2.1</version> </dependency> <dependency> <groupId>org.quartz-scheduler</groupId> <artifactId>quartz-jobs</artifactId> <version>2.2.1</version> </dependency>
2.在spring的ApplicationContext.xml文件中新增maven
<!-- 系统调度控制器 --> <bean id="statTask" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean"> <property name="targetObject" ref="emcee_stat" /> <property name="targetMethod" value="execute" /> <property name="concurrent" value="false" /> </bean> <bean id="stat_cronTrigger" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean"> <property name="jobDetail" ref="statTask" /> <property name="cronExpression" value="0 04 19 * * ?" /> </bean> <bean id="LiveTask" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean"> <property name="targetObject" ref="live_task" /> <property name="targetMethod" value="execute" /> <property name="concurrent" value="false" /> </bean> <bean id="Live_cronTrigger" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean"> <property name="jobDetail" ref="LiveTask" /> <property name="cronExpression" value="0 30 10 * * ?" /> </bean> <bean id="schdulerFactory" lazy-init="false" class="org.springframework.scheduling.quartz.SchedulerFactoryBean"> <property name="triggers"> <list> <ref bean="stat_cronTrigger" /> <ref bean="Live_cronTrigger" /> </list> </property> </bean>
3.对应实现代码以下,该中方式采用组件注解,注入servicethis
@Component("live_task") public class AutoSettleLiveTask { private static final Logger LOGGER = LoggerFactory.getLogger(AutoSettleLiveTask.class); @Autowired private BatchService batchService; private static AutoSettleLiveTask autoSettleLiveTask; // 静态初使化 一个AutoSettleLiveTask类 // 这样是为了在spring初使化以前 public void setBatchService(BatchService batchService) { this.batchService = batchService; } @PostConstruct // 经过@PostConstruct 和 @PreDestroy 方法 实现初始化和销毁bean以前进行的操做 public void init() { autoSettleLiveTask = this; autoSettleLiveTask.batchService = this.batchService; // 初使化时将已静态化的batchService实例化 } @PreDestroy public void destory() { } public void execute() throws IllegalArgumentException, IllegalAccessException{ LOGGER.info("定时任务-begin"); } }