一看便知spring+quartz定时任务
这是我经过网上收集然后加上自己的测试写的,以便大家使用
标配:已测
注意需要的包:(在已经配置spring 的情况下)
quartz-all-1.6.jar spring-context-support-4.0.0.jar
applicationContext.xml配置文件
<!-- 总管理类 如果将lazy-init='false'那么容器启动就会执行调度程序 当 IoC容器启动时,lazy-init="true"的bean,IoC容器启动时不会实例化该bean,只有当容器需要用到时才实例化它。lazy-init有利于容器效率,对于不需要的bean可以先不管。--> <bean id="testStartQuertz" lazy-init="false" class="org.springframework.scheduling.quartz.SchedulerFactoryBean"> <property name="triggers"> <list> <ref bean="testDoTime"/> <ref bean="test111"/> </list> </property> </bean> <!-- 每隔5秒调用work方法 --> <bean id="testDoTime" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean"> <property name="jobDetail" ref="testTask"/> <property name="cronExpression" value="0/5 * * * * ?"/> <!-- cron表达式 --> </bean> <!-- 每隔5秒调用work方法 --> <bean id="test111" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean"> <property name="jobDetail" ref="tquartz"/> <property name="cronExpression" value="0/3 * * * * ?"/> <!-- cron表达式 --> </bean> <!-- 定义调用对象和调用对象的方法 --> <bean id="testTask" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean"> <property name="targetObject" ref="testJob"/> <!-- 调用的类 --> <property name="targetMethod" value="workquartz"/> <!-- 调用类中的方法 --> <property name="concurrent" value="false" /> </bean> <bean id="tquartz" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean"> <property name="targetObject" ref="testJob"/> <!-- 调用的类 --> <property name="targetMethod" value="testquartz"/> <!-- 调用类中的方法 --> <property name="concurrent" value="false" /> <!--配置为false不允许任务并发执行--> </bean> <!-- 要调用的工作类 --> <bean id="testJob" class="com.odj.sssp.test.ChangeStateTask"></bean>
测试类
public class ChangeStateTask { public void workquartz(){ System.out.println(new Date()+"||"+Thread.currentThread()+"--work--" ); try { TimeUnit.SECONDS.sleep(15); } catch (InterruptedException e) { e.printStackTrace(); } } public void testquartz(){ System.out.println(new Date()+"||"+Thread.currentThread()+"--testquartz--"); } }