美文网首页
1.8-Quartz大哥(与springMVC融合)

1.8-Quartz大哥(与springMVC融合)

作者: 王子也寂寞 | 来源:发表于2017-12-12 23:30 被阅读0次

配置有两种bean

  • MethodInvokingJobDetailFactoryBean
  • JobDetailFactoryBean

一.MethodInvokingJobDetailFactoryBean

在dispatcher-servlet.xml中配置

<!--quartz的bean之MethodInvokeJobDetailFactoryBean-->
    <bean id="simpleJobDetail"
          class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
        <property name="targetObject" ref="myBean" />
        <property name="targetMethod" value="printMessage" />
    </bean>

MyBean这个类的编写

@Component("myBean")
public class MyBean {
    public void printMessage() {
        System.out.println("MyBean Executes");
    }
}

二.JobDetailFactoryBean

需要给作业传递数据,想更加灵活的话就使用这种方式
在dispatcher-servlet.xml中的配置

<bean name="firstComplexJobDetail" 
          class="org.springframework.scheduling.quartz.JobDetailFactoryBean">
        <!--jobClass关联到一个继承自QuartzJobBean接口的类-->
        <property name="jobClass" 
                  value="cn.springquartz.FirstScheduledJob"></property>
        <!--jobDataMap是可选的,可以传入自己的一些参数-->
        <property name="jobDataMap">
            <map>
                <entry key="anotherBean" value-ref="anotherBean"></entry>
            </map>
        </property>
        <property name="durability" value="true" />
    </bean>

FirstScheduledJob类

public class FirstScheduledJob extends QuartzJobBean {

    private AnotherBean anotherBean;

    public void setAnotherBean(AnotherBean anotherBean) {
        this.anotherBean = anotherBean;
    }

    @Override
    protected void executeInternal(JobExecutionContext jobExecutionContext) throws JobExecutionException {
        //todo 实现业务逻辑
    }
}

AnotherBean

@Component
public class AnotherBean {
    public void hahah(){
        //普通的类
    }
}

三.Trigger的配置

 <!--这下再来指定Trigger,simpleTrigger-->
    <bean id="simpleTrigger"
          class="org.springframework.scheduling.quartz.SimpleTriggerFactoryBean">
        <!--绑定simpleJobDetail-->
        <property name="jobDetail" ref="simpleJobDetail" />
        <!--距离当前时间1s后执行-->
        <property name="startDelay" value="1000" />
        <!--之后每隔2s执行一次-->
        <property name="repeatInterval" value="2000" />
    </bean>
    <!--cronTrigger-->
    <bean id="cronTrigger"
          class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">
        <!--绑定firstComplexJobDetail-->
        <property name="jobDetail" ref="firstComplexJobDetail" />
        <!--绑定Cron表达式-->
        <property name="cronExpression" value="0/5 * * ? * *" />
    </bean>

四.scheduler的配置

<bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
        <!--指定job-->
        <property name="jobDetails">
            <list>
                <ref bean="simpleJobDetail"/>
                <ref bean="firstComplexJobDetail" />
            </list>
        </property>
        <!--指定trigger-->
        <property name="triggers">
            <list>
                <ref bean="simpleTrigger"/>
                <ref bean="cronTrigger" />
            </list>
        </property>
    </bean>

相关文章

网友评论

      本文标题:1.8-Quartz大哥(与springMVC融合)

      本文链接:https://www.haomeiwen.com/subject/cspoixtx.html