Spring에서 Quartz를 구성하는 과정:
1. JAR 패키지를 가져옵니다.
quartz에 필요한 JAR 패키지는 이미 Spring에 포함되어 있으며 해당 위치는 libquartz 아래의 quartz입니다. spring 이후의 디렉토리는 -all-1.6.1.jar,
프로젝트의 WEB-INF/lib에 복사하면 됩니다.
2. Spring이 시작될 때 quartz 구성 파일을 로드하도록 web.xml을 구성합니다.
<?xml version="1.0" encoding="UTF-8"?> <web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"> <!-- spring --> <context-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:application-*.xml</param-value> </context-param> <!-- spring监听 --> <listener> <listener-class> org.springframework.web.context.ContextLoaderListener </listener-class> </listener> </web-app>
3. 실제로는 다음과 같은 quartz 구성 파일을 작성합니다. 구성은 완전히 괜찮습니다.
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd"> <!-- 任务实体 --> <bean id="testTaskBean" class="com.jp.task.TestTask" /> <!-- 定时更新政策任务方法 --> <bean id="testTaskTimerMethod" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean"> <property name="targetObject" ref="testTaskBean" /> <!-- targetMethod 配置定时执行的方法名 --> <property name="targetMethod" value="executeAction" /> <property name="concurrent" value="false" /> </bean> <!-- 定时更新政策触发器 --> <bean id="testTaskTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean"> <property name="jobDetail" ref="syncPolicyTaskTimerMethod" /> <!-- 每个3分钟的第0秒执行 --> <property name="cronExpression" value="0 0/3 * * * ?" /> </bean> <!-- 订制任务列表 --> <bean id="scheduler" class="org.springframework.scheduling.quartz.SchedulerFactoryBean"> <property name="triggers"> <list> <ref bean="testTaskTrigger" /> </list> </property> </bean> </beans>
4. 작업을 실행하는 JAVA 클래스 TestTask를 작성합니다
package com.jp.task; import org.quartz.JobExecutionContext; import org.quartz.JobExecutionException; import org.springframework.scheduling.quartz.QuartzJobBean; public class TestTask extends QuartzJobBean{ Logger log = Logger.getLogger( PolicyServiceTest.class ); public void executeAction(){ log.info("Hello quartz"); } @Override protected void executeInternal(JobExecutionContext arg0) throws JobExecutionException { } }
5 .모든 작업이 완료되어 실행할 준비가 되었습니다. 기본적으로 오류가 보고되었습니다. NoSuchMethod와 같은 오류가 있습니다.
이 문제는 commons-collections.jar 버전이 너무 낮기 때문에 발생합니다. commons-collections-3.2.jar 이상이 필요합니다.
이때 찾고 있는 프로젝트에는 commons-collections-3.2.jar이 있습니다. 무슨 일이 일어나고 있는 걸까요? 다시 검색해 보면 hibernate에 있는 commons-collections-2.1.1.jar을 찾을 수 있습니다.
commons-collections-2.1.1.jar만 삭제하세요.
PS:cronExpression——Cron 표현식 설명
초
분
시간
월 날짜
월
주 날짜
연도(선택 필드)
특수 문자
Cron 트리거는 다음과 같이 일련의 특수 문자를 활용합니다. 다음은 표시됨:
백슬래시(/) 문자는 증분 값을 나타냅니다. 예를 들어 초 필드의 "5/15"는 5초부터 시작하여 15초마다를 의미합니다.
물음표(?) 문자와 문자 L 문자는 날짜 및 요일 필드에서만 사용할 수 있습니다. 물음표는 이 필드에 특정 값이 포함되어 있지 않음을 나타냅니다. 따라서 월 내의 날짜를 지정하는 경우 요일 필드에 "?"를 삽입하여 요일 값이 중요하지 않음을 나타낼 수 있습니다. 문자 L 문자는 마지막의 약자입니다. 해당 월의 마지막 날에 실행되도록 예약하려면 날짜 필드에 입력합니다. 요일 필드에서 "L"은 단독으로 존재할 경우 "7"과 같고, 그렇지 않으면 해당 월 내 요일의 마지막 인스턴스를 나타냅니다. 따라서 "0L"은 매월 마지막 일요일에 실행되도록 예정되어 있음을 의미합니다.
날짜 필드의 문자(W) 문자는 지정된 값에 가장 가까운 평일에 실행되도록 예약합니다. 해당 월의 첫 번째 영업일에 실행되도록 예약하려면 월 날짜 필드에 "1W"를 입력합니다.
파운드(#) 문자는 해당 월의 특정 근무일 인스턴스를 지정합니다. 매월 두 번째 월요일에 작업을 예약하려면 요일 필드에 "MON#2"를 입력합니다.
별표(*) 문자는 필드에 가능한 모든 값을 사용할 수 있음을 나타내는 와일드카드 문자입니다.
필드 허용 값에 허용되는 특수 문자:
초 0-59, - * /
분 0-59, - * /
시간 0-23, - * /
날짜 1- 31, - * ? / L W C
월 1~12월 또는 1월~12월, - * /
주 1~7 또는 SUN-SAT, - * ? / L C #
연도(선택 사항) 비워 두세요. 1970-2099, - * /
표현 의미
"0 0 12 * * ?" 매일 정오 12시에 트리거됨
"0 15 10 ? * *" 매일 오전 10시 15분에 트리거됨
"0 15 10 * * ?" 매일 오전 10시 15분에 트리거
"0 15 10 * * ? *" 매일 오전 10시 15분에 트리거
"0 15 10 * * ? 2005" 트리거 2005년 매일 오전 10시:15 트리거
"0 * 14 * * ?" 매일 오후 2시부터 오후 2시 59분까지 1분마다 트리거
"0 0/5 14 * * ?" 매일 오후 2시부터 2시 59분까지 1분 2시 55분 동안 5분마다 트리거
"0 0/5 14,18 * * ?" 오후 2시부터 2시 55분과 6시 사이에 5분마다 트리거 매일 6:55
"0 0-5 14 * * ?" 매일 오후 2시부터 오후 2시 5분까지 1분마다 트리거
"0 10,44 14 ? 3 WED" 매주 수요일 오후 2시 10분 3월 및 2시 44분은
"0 15 10 ? * MON-FRI"가 월요일부터 금요일까지 오전 10시 15분에 트리거됩니다.
"0 15 10 15 * ?"는 15일 오전 10시 15분에 트리거됩니다. 매월
"0 15 10 L * ?" 매월 마지막 날 오전 10시 15분에 트리거
"0 15 10 ? * 6L" 매월 마지막 금요일 오전 10시 15분에 트리거
"0 15 10 ? * 6L 2002-2005" 2002년부터 2005년까지 매월 마지막 금요일 오전 10시 15분에 트리거됨
"0 15 10 ? * 6#3" 오전 10시 15분에 트리거됨 매월 세 번째 금요일
매일 오전 6시
0 6 * * *
2시간 간격
0 */2 * * *
오후 11시부터 오전 8시 사이 2시간마다 오전 8시
0 23-7/2, 8 * * *
매월 4일 및 매주 월요일~수요일 오전 11시 '시계
0 11 4 * 1-3
1월 1일 오전 4시
0 4 1 1 *
Java용 Spring 프레임워크에 대한 추가 정보 Quartz 구성에 대한 튜토리얼을 보려면 PHP 중국어 웹사이트를 주목하세요!