Spring集成Quartz框架的两种方式。

可参考:https://blog.csdn.net/yk614294861/article/details/84324603

1、使用Spring与Quarta配置作业得两种方式:
  a、方式一,MethodInvokingJobDetailFactoryBean。作业类即普通的java类,不需要继承自任何基类。
  b、方式二,JobDetailFactoryBean。作业类需要继承自特定的作业类基类,如Quartz中需要继承自org.springframework.scheduling.quartz.QuartzJobBean。

2、创建一个maven项目,web工程的。引入pom.xml包。

 1 "http://maven.apache.org/POM/4.0.0"
 2     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 3     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
 4     4.0.0
 5     com.bie
 6     springQuartz
 7     war
 8     0.0.1-SNAPSHOT
 9     springQuartz Maven Webapp
10     http://maven.apache.org
11 
12     
13         UTF-8
14         4.3.6.RELEASE
15     
16     
17         
18             junit
19             junit
20             3.8.1
21             test
22         
23         
24             org.springframework
25             spring-webmvc
26             ${spring.version}
27         
28         
29             org.springframework
30             spring-context
31             ${spring.version}
32         
33 
34         
35             org.springframework
36             spring-aop
37             ${spring.version}
38         
39 
40         
41             org.springframework
42             spring-core
43             ${spring.version}
44         
45 
46         
47             org.springframework
48             spring-context-support
49             ${spring.version}
50         
51 
52         
53             org.springframework
54             spring-tx
55             ${spring.version}
56         
57         
58             org.quartz-scheduler
59             quartz
60             2.2.3
61         
62     
63     
64         springquartz
65         
66             
67                 org.apache.maven.plugins
68                 maven-compiler-plugin
69                 
70                     1.8
71                     1.8
72                 
73             
74         
75     
76 
77 

然后配置一下你的web.xml配置文件。

 1 "1.0" encoding="UTF-8"?>
 2 "http://www.w3.org/2001/XMLSchema-instance"
 3     xmlns="http://xmlns.jcp.org/xml/ns/javaee"
 4     xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee 
 5     http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
 6     id="WebApp_ID" version="3.1">
 7     springQuartz
 8     
 9         index.html
10         index.jsp
11     
12 
13     
15     
16         
17         springMvc
18         class>org.springframework.web.servlet.DispatcherServletclass>
19         
20         
21             contextConfigLocation
22             classpath:/spring-mvc.xml
23         
24         
25         1
26     
27     
28     
29     
30         springMvc
31         /
32     
33 
34 
35 
36 
37 

3、使用第一种方式。方式一,MethodInvokingJobDetailFactoryBean。作业类即普通的java类,不需要继承自任何基类。

 1 package com.bie.quartz;
 2 
 3 import java.text.SimpleDateFormat;
 4 import java.util.Date;
 5 
 6 import org.springframework.stereotype.Component;
 7 
 8 @Component("myBean")
 9 public class MyBean {
10     
11     /**
12      * 
13      */
14     public void printMessage() {
15         System.out.println("==============================第1种方式开始=========================\n\n\n");
16         // 打印当前的执行时间,格式为2017-01-01 00:00:00
17         Date date = new Date();
18         SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
19         System.out.println("第1种方式:我的bean 执行了呢!" + sf.format(date) + "\n\n\n");
20         System.out.println("==============================第1种方式开始=========================\n\n\n");
21 
22     }
23 }

4、使用第二种方式,方式二,JobDetailFactoryBean。作业类需要继承自特定的作业类基类,

如Quartz中需要继承自org.springframework.scheduling.quartz.QuartzJobBean;

 1 package com.bie.quartz;
 2 
 3 import java.text.SimpleDateFormat;
 4 import java.util.Date;
 5 
 6 import org.quartz.JobExecutionContext;
 7 import org.quartz.JobExecutionException;
 8 import org.springframework.scheduling.quartz.QuartzJobBean;
 9 
10 public class FirstScheduledJob extends QuartzJobBean {
11 
12     private AnotherBean anotherBean;
13 
14     public void setAnotherBean(AnotherBean anotherBean) {
15         this.anotherBean = anotherBean;
16     }
17 
18     @Override
19     protected void executeInternal(JobExecutionContext arg0) throws JobExecutionException {
20         System.out.println("==============================第2种方式开始=========================\n\n\n");
21         Date date = new Date();
22         SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
23         System.out.println("第2种方式:我的调度作业 执行了呢!" + sf.format(date) + "\n\n\n");
24         this.anotherBean.printAnotherMessage();
25     }
26 }
 1 package com.bie.quartz;
 2 
 3 import org.springframework.stereotype.Component;
 4 
 5 @Component("anotherBean")
 6 public class AnotherBean {
 7 
 8     public void printAnotherMessage() {
 9         System.out.println("第2种方式: 自己注入的bean被调用了......\n\n\n");
10         System.out.println("==============================第2种方式:结束=========================\n\n\n");
11     }
12 
13 }

然后配置一下你的配置文件。就可以启动了。需要注意的是如果全局default-lazy-init="true",懒加载,需要调用才会进行调度的。如果将lazy-init='false',不懒加载,那么容器启动就会执行调度程序。

  1 "1.0" encoding="UTF-8"?>
  2 "http://www.springframework.org/schema/beans"
  3     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4     xmlns:context="http://www.springframework.org/schema/context"
  5     xmlns:mvc="http://www.springframework.org/schema/mvc"
  6     xmlns:p="http://www.springframework.org/schema/p"
  7     xsi:schemaLocation="http://www.springframework.org/schema/beans  
  8             http://www.springframework.org/schema/beans/spring-beans.xsd  
  9             http://www.springframework.org/schema/mvc  
 10             http://www.springframework.org/schema/mvc/spring-mvc.xsd  
 11             http://www.springframework.org/schema/context  
 12             http://www.springframework.org/schema/context/spring-context.xsd">
 13 
 14     
 15     
 16     "/*.html" mapping="/**.html" />
 17     "/css/*" mapping="/css/**" />
 18     "/js/*" mapping="/js/**" />
 19     "/images/*" mapping="/images/**" />
 20     
 21     <bean
 22         class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter">
 23         "messageConverters">
 24             
 25                 <bean
 26                     class="org.springframework.http.converter.StringHttpMessageConverter">
 27                     "supportedMediaTypes">
 28                         
 29                             text/html;charset=UTF-8
 30                         
 31                     
 32                 
 33             
 34         
 35     
 36     
 37     
 38     
 39     base-package="com.bie" />
 40 
 41     
 42     
 43     "/" view-name="index" />
 44     <bean
 45         class="org.springframework.web.servlet.view.UrlBasedViewResolver">
 46         "viewClass"
 47             value="org.springframework.web.servlet.view.JstlView">
 48         
 49         "prefix" value="/">
 50         
 51         "suffix" value=".jsp">
 52     
 53 
 54     
 55 
 56     
 57     
 58     
 59 
 60     
 61     "simpleJobDetail"
 62         class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
 63         
 64         "targetObject" ref="myBean" />
 65         
 66         "targetMethod" value="printMessage" />
 67         
 68         "concurrent" value="false">
 69     
 70 
 71     
 72     "mySimpleTrigger"
 73         class="org.springframework.scheduling.quartz.SimpleTriggerFactoryBean">
 74         
 75         "jobDetail" ref="simpleJobDetail" />
 76         
 77         "startDelay" value="1000" />
 78         
 79         "repeatInterval" value="2000" />
 80     
 81 
 82     
 83     <bean
 84         class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
 85         "triggers">
 86             
 87                 
 88                 <ref bean="mySimpleTrigger" />
 89             
 90         
 91         "jobDetails">
 92             
 93                 
 94                 <ref bean="simpleJobDetail" />
 95             
 96         
 97     
 98 
 99 
100     
101 
102 
103     
104     
105     "firstComplexJobDetail"
106         class="org.springframework.scheduling.quartz.JobDetailFactoryBean">
107         "jobClass"
108             value="com.bie.quartz.FirstScheduledJob" />
109         "jobDataMap">
110             
111                 
112                 "anotherBean" value-ref="anotherBean" />
113             
114         
115         "durability" value="true" />
116     
117 
118 
119     
120     
121     "myCronTrigger"
122         class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">
123         "jobDetail" ref="firstComplexJobDetail" />
124         
125         "cronExpression" value="0/5 * * ? * *" />
126     
127 
128     
129     
130     
131     "false"
132         class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
133         "triggers">
134             
135                 <ref bean="myCronTrigger" />
136             
137         
138         "jobDetails">
139             
140                 <ref bean="firstComplexJobDetail" />
141             
142         
143     
144 
145 
146   

效果如下所示:

Spring集成Quartz框架的两种方式。_第1张图片

 

待续......

你可能感兴趣的:(Spring集成Quartz框架的两种方式。)