spring整合任务调度

蓝咒 提交于 2020-03-07 21:54:31

需要的包

<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-context-support</artifactId>
    <version>${spring.version}</version>
</dependency>
<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>

spring中配置bean

<!--调度工厂-->
<bean id="myScheduler"
      class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
    <property name="triggers">
        <list>
            <ref bean="userMonitorTriggers"/>
        </list>
    </property>
    <property name="autoStartup" value="true"/>
</bean>

<!--触发-->
<bean id="userMonitorTriggers"
      class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">
    <property name="jobDetail" ref="monitorUserBuyTimesJob">
    </property>
    <property name="cronExpression">
        <!--<value>0 0 */4 * * ?</value>-->  <!--每天四个小时查询一次-->
        <value>0 */2 * * * ?</value>
    </property>
</bean>

<!--任务详情-->
<bean id="monitorUserBuyTimesJob"
      class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
    <property name="targetObject" ref="userMonitorService"/>
    <property name="targetMethod" value="monitorUserBuyTimes"/>
    <property name="concurrent" value="false"/>
    <!-- 是否允许任务并发执行。当值为false时,表示必须等到前一个线程处理完毕后才再启一个新的线程 -->
</bean>

<!--业务类-->
<bean id="userMonitorService" class="com.bjs.riskmng.monitor.service.impl.UserMonitorServiceImpl">
</bean>

Cron Expressions 轮询表达式(我翻译的,个人理解)

Cron-Expressions are used to configure instances of CronTrigger. Cron-Expressions are strings that are actually made up of seven sub-expressions, that describe individual details of the schedule. These sub-expression are separated with white-space, and represent

  1. Seconds
  2. Minutes
  3. Hours
  4. Day-of-Month
  5. Month
  6. Day-of-Week
  7. Year (optional field)

轮询表达式用来初始化调度器,轮询表达式是一个由七个空格分开的子表达式组成的字符串。它描述了调度详情。这些子表达式由空格分开,分表表示 “秒 分 小时 每个月份中哪一天 月份 每周的哪一天 年(可选项)”

Example Cron Expressions 轮询表达式举例

CronTrigger Example 1 - an expression to create a trigger that simply fires every 5 minutes

“0 0/5 * * * ?”     每5分钟执行一次

CronTrigger Example 2 - an expression to create a trigger that fires every 5 minutes, at 10 seconds after the minute (i.e. 10:00:10 am, 10:05:10 am, etc.).

“10 0/5 * * * ?”   每五分钟的第十秒执行

CronTrigger Example 3 - an expression to create a trigger that fires at 10:30, 11:30, 12:30, and 13:30, on every Wednesday and Friday.

“0 30 10-13 ? * WED,FRI”  每天10点到13点种,每半个小时执行一次。

CronTrigger Example 4 - an expression to create a trigger that fires every half hour between the hours of 8 am and 10 am on the 5th and 20th of every month. Note that the trigger will NOT fire at 10:00 am, just at 8:00, 8:30, 9:00 and 9:30

“0 0/30 8-9 5,20 * ?”   每个月的第5号和第20号,每天8点到9点,每半个小时执行一次【8:00,8:30,9:00,9:30】。(比较绕,静下心来好好看)

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!