Spring中使用Quartz的配置步骤
2011-07-15 16:20
525 查看
配置:需要在spring中加入的包quartz-all-1.6.0.jar,commons-collections.jar===============================华丽的分割线===========================1、加入需要执行worker类<bean id="testTaskService" class="com.jd.lottery.service.timetask.impl.PursueCancelTaskServiceImpl"/> Ps : 一个普通的bean===============================华丽的分割线===========================2、在Quartz中注入worker类和需要执行的方法 <bean id="testQuartz" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean"> <property name="targetObject"ref="testTaskService"/> <property name="targetMethod"value="execute"/> <property name="concurrent"value="false"/> </bean> Ps:targetObject : 目标对象,即worker类targetMethod :目标方法,需要执行的目标方法,必须是无参方法concurrent : 同步。Q&AQ: 执行的方法必须是无参方法,如何传递参数?A:在Spring中注入参数 eg : <bean id="testTaskService"class="com.jd.lottery.service.timetask.impl.PursueCancelTaskServiceImpl"> <property name=”arg1” value=”10” /> </bean> Q:concurrent具体什么意思?A:指定concurrent设为false,多个线程不会并发运行,第二个线程将不会在第一个线程完成之前开始。===============================华丽的分割线=========================== |
3、配置时间触发器<bean id="testTrigger"class="org.springframework.scheduling.quartz.CronTriggerBean"> <property name="jobDetail"ref="testQuartz"/> <property name="cronExpression"value="0/5 * * * * ?"/> </bean> Ps:jobDetail :要触发的QuartzcronExpression:触发周期Q&AQ:cronExpression怎么配置?A:每一位的含义 秒(0-59 可用符号:, - * /) 分(0-59 可用符号:, - * /) 小时(0-23 可用符号:, - * /) 日(1-31 可用符号:, - * / ?) 月(1-12 可用符号:, - * /) 周(1-7 可用符号:, - * / ?) 年(1970-2099 可选 可用符号:, - * /) 字符的含义 *:表示所有值 ?: 表示不关心该位的值 -:范围,如:在周的位置使用1-7 相当于* ,:表示指定的某些值,如:在周的位置使用1,3,5表示在周一,周三,周五触发 /:表示每次递增,如:在秒的位置使用 0/5 表示在0秒触发,每个5秒触发一次 eg : 每隔5秒触发一次 <bean id="testTrigger"class="org.springframework.scheduling.quartz.CronTriggerBean"> <property name="jobDetail"ref="testQuartz"/> <property name="cronExpression"value="0/5 * * * * ?"/> </bean> 每天10点30分25秒触发一次 <bean id="testTrigger"class="org.springframework.scheduling.quartz.CronTriggerBean"> <property name="jobDetail"ref="testQuartz"/> <property name="cronExpression"value="25 30 10 0/1 * ?"/> </bean> 每周一三五晚十点触发一次 <bean id="testTrigger"class="org.springframework.scheduling.quartz.CronTriggerBean"> <property name="jobDetail"ref="testQuartz"/> <property name="cronExpression"value="0 0 22 2,4,6 * ?"/> </bean> ===============================华丽的分割线========================== |
<bean id="testScheduler"class="org.springframework.scheduling.quartz.SchedulerFactoryBean"> <property name="triggers"> <list> <ref bean="testTrigger"/> </list> </property> <property name="autoStartup"value="true"/> <property name="quartzProperties"> <props> <prop key="org.quartz.threadPool.threadCount">1</prop> </props> </property> </bean>
Ps:triggers:注入定时器任务,可以为多个autoStartup:系统启动时自动启动,可以不配置,默认为truequartzProperties:Quartz其他配置 org.quartz.threadPool.threadCount可以不配,默认为10Q&AQ:当autoStartup设置为false时怎么启动?A:如果需要手动启动Scheduler则需要获得Quartz中的stdScheduler对象,调用该对象的start方法启动,shutdown方法关闭。 要取得stdScheduler对象要配置Map对象来保存stdScheduler对象即可 eg: Xml :
<bean name="schedulerMap"class="java.util.HashMap"> <constructor-arg> <map> <entry key="testScheduler"value-ref="testScheduler"/> </map> </constructor-arg> </bean>
Code :
Map<String, StdScheduler> scheMap = (Map<String, StdScheduler>) context.getBean("schedulerMap"); StdScheduler std = scheMap.get("testScheduler"); System.out.println("wait 3 second to start"); Thread.sleep(3000); std.start(); System.out.println("30 seconds shutdown after"); for (int i = 30; i >= 1; i--) { Thread.sleep(1000); System.out.println("countdown : " + i); } std.shutdown(); System.out.println("worker is stop..");
相关文章推荐
- 使用Spring配置管理Quartz的时候会遇到下面的异常:
- Spring使用Quartz配置调度事务
- quartz整合spring 相关配置及使用
- 超级详细的新手在Idea中使用maven配置Spring+springmvc+mybatis(SSM)框架步骤
- java web使用quartz执行定时任务 Spring配置quartz
- 使用spring+quartz配置多个定时任务
- Spring 集成 Quartz 的配置与使用
- Spring3中定时器的配置使用之Quartz
- Spring quartz 的配置使用一 SampleTrigger
- Spring中quartz的配置及使用(企业…
- Spring中Quartz的配置使用
- Springboot中使用数据库配置Quartz定时任务
- Quartz与Spring结合使用及集群配置
- Spring使用Quartz配置调度事务
- 关于Spring中Commons Validator的使用说明及MVC验证的配置步骤
- Spring使用Quartz配置调度事物
- Spring使用Quartz配置调度事务
- 在Spring + Hibernate中使用二级缓存配置步骤
- 《pro Spring》学习笔记之使用Spring配置Quartz
- Spring 定时器配置 基于配置文件 (使用 Spring3.2 、 quartz-1.6.5)