IntroductionQuartz is an open-source job scheduling framework written entirely by Java, which is actually the framework for starting a timed task. When used, you only need to create an implementation class for the Org.quartz.Job interface, implementing the only method: public void Execute (jobexecutioncontext context) throws Jobexecutionexception , add your logical task to the Execute () method.
first, the basic concept(i), execution object job: Work tasks, what are you going to do? Trigger: Perform job task trigger conditions, what time to execute, how often to write a work task
(ii) Use of Crontrigger
Crontriggers is usually more useful than simpletrigger if you need to trigger tasks on a schedule like a calendar instead of firing at specific intervals like Simpletrigger.
Cron Expressions--cron
1. Seconds sec
2. Minutes minutes
3. Hours hours
4. Days of the Day-of-month month
5 month
6. Day-of-week Days of the week
7. Year (optional field) (optional field)
All of the values in the domain have a specific legal scope, the legal range of these values is quite obvious, for example: the legal value of the second and the domain is 0 to 59, the legal range of the hour is 0 to 23,day-of-month is worth legal where the range is 0 to 31, but you need to be aware of the different days in different months. The legal value for the month is 0 to 11. or use the string Jan,feb MAR, APR, May, June, JUL,, SEP, OCT, NOV and DEC to indicate. Days-of-week can be represented by 1 to 7来 (1= Sunday) or by the string sun, MON, TUE, Wed,thu, FRI, and SAT.
The wildcard character (' * ') can be used to represent "each" possible value in a domain. Therefore, the * in the month field represents each month, while the * in the Day-of-week field represents "Every day of the week".
The '/' character is used to denote the increment of the value, for example, if the minute field is placed in ' 0/15 ', it means "every 15 minutes, starting from 0", if you use ' 3/20 ' in the part of the domain, it means "every 20 minutes in the hour, starting from the 3rd minute" or the same form is ' 3,23,43 '.
0 0 12? * 3 Every Tuesday noon 12 o'clock Perform tasks
0 0 0 0 *? 1st 0 O'Clock each month perform tasks
Note: 4. The month Zhongtian and 6. Zhou Zhongtian can not be taken at the same time *, indicating any day when one with *, another use?
Second, Spring integration Quartz
Spring-managed beans in the Job cannot be injected and need to be customized jobfactory resolved in Scheduler. (i), create jobfactory to inject job to implement spring management
@Service ("Jobfactory")publicclassextends adaptablejobfactory{ @ autowired private autowirecapablebeanfactory capablebeanfactory; @Override protectedthrows Exception { super. Createjobinstance (bundle); Capablebeanfactory.autowirebean (jobinstance); return jobinstance;} }
(ii), configuration Applicationcontext.xml 1, open packet scanning (jobfactory, the service layer of the work task is located in the package)
<context:component-scan base-package = "Com.hehe.quartz.service"/>
2, work task Jobdetail configuration----(Jobdetailfactorybean)
class= "Org.springframework.scheduling.quartz.JobDetailFactoryBean" >
The class file that injects the dispatch task job <property name= "Jobclass" value= "Cn.itcast.quartz.job.HelloJob"/></bean>
3, Trigger trigger configuration----(Simpletriggerfactorybean)
Simmpletrigger
<bean id= "Simpletrigger" class= "Org.springframework.scheduling.quartz.SimpleTriggerFactoryBean" >
Inject dispatch Task Job
<property name= "Jobdetail" ref= "Hellojob"/>
Set how long after execution starts (0 seconds after execution)
<property name= "Startdelay" value= "0"/>
Set how often the loop executes once (1-minute loop 1 times)
<property name= "Repeatinterval" value= "60000"/>
</bean>
Crontrigger
<bean id= "Crontrigger" class= "Org.springframework.scheduling.quartz.CronTriggerFactoryBean" >
<property name= "Jobdetail" ref= "Examplejob"/>
<property name= "cronexpression" value= "0 0 6 * *?" />
</bean>
4, scheduling Task Scheduler configuration----(Schedulerfactorybean)
class= "Org.springframework.scheduling.quartz.SchedulerFactoryBean" >//inject work tasks
<property name= "Jobfactory" ref= "Jobfactory"/>
Injection trigger <property name= "triggers" > <list> <ref bean= "Simpletrigger"/> </ list> </property> </bean>
Attached: 1, quartz 2.2.1 Maven coordinates:
<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>
Quartz Task Scheduling framework integrates spring usage