Java의 Spring 프레임워크에서 Quartz 튜토리얼 구성
1. JAR 패키지 가져오기
quartz에 필요한 JAR 패키지는 스프링에 포함되어 있으며, 스프링 압축 해제 후 디렉터리의\lib\quartz 아래에 있는 quartz-all-1.6.1에 위치합니다.jar,
프로젝트의 WEB-INF/lib로 복사하면 됩니다.
2. 웹 설정.xml,spring이 시작될 때quartz 프로필을 불러옵니다.
<?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 프로필 작성:application-quartz.xml 사실 이 설정들은 다른spring 프로필에 충분히 쓸 수 있습니다
<?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.자르는 지우면 돼.
PS:cronExpression – Cron 표현식 설명
백슬래시(/) 문자는 증분 값을 나타냅니다.예를 들어, 초 필드에서 5/15는 15초에 한 번씩 5초부터 시작됩니다.
물음표(?)문자 및 알파벳 L 문자는 월간 날짜와 주간 날짜 필드에서만 사용할 수 있습니다.물음표는 이 필드에 구체적인 값이 포함되지 않음을 나타낸다.따라서 월간 날짜를 지정하면 주간 날짜 필드에'?'를 삽입할 수 있습니다.주 내 날짜 값이 중요하지 않다는 것을 나타낸다.알파벳 L 문자는 last의 줄임말이다.월내 날짜 필드에 놓으면 그 달의 마지막 날에 실행할 것을 표시합니다.주 내 날짜 필드에서 "L"이 단독으로 존재하면 "7"과 같고, 그렇지 않으면 그 달 내 주 내 날짜의 마지막 실례를 대표합니다.그래서'0L'은 그 달의 마지막 일요일에 집행할 것을 표시한다.
월간 날짜 필드의 알파벳 (W) 문자는 지정한 값에 가장 가까운 작업일에 실행을 배정합니다."1W"를 월간 날짜 필드에 놓으면 그 달의 첫 번째 근무일 내에 실행을 안배한다는 것을 나타낸다.
우물 번호 (#) 문자는 지정된 달의 특정 작업일 인스턴스를 지정합니다."MON#2"를 주 내 날짜 필드에 놓으면 그 달의 두 번째 월요일에 임무를 안배한다는 것을 나타낸다.
별표(*) 문자는 와일드카드 문자로 가능한 모든 값을 사용할 수 있습니다.
필드 허용 값이 허용하는 특수 문자:
초 0-59, - */
분 0-59, -*/
시간 0-23, - */
날짜 1-31, -*?/L W C
월 1-12 또는 JAN-DEC, -*/
월요일 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시 55분까지 5분마다 터치
"0 0/5 14,18 * * ?"매일 오후 2시부터 2:55 사이와 오후 6시부터 6:55 사이의 5분마다 촉발
"0 0-5 14 * * ?"매일 오후 2시부터 오후 2시까지 1분마다 터치
"0 10, 44, 14? 3 WED"매년 3월 수요일 오후 2:10, 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 * * *
두 시간마다
0 */2 * * *
밤 11시부터 아침 8시까지 두 시간마다, 아침 8시마다
0 23-7/2,8 * * *
매달 4일과 매주 월요일부터 수요일까지 아침 11시.
0 11 4 * 1-3
1월 1일 아침 4시.
0 4 1 1 *
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
JPA + QueryDSL 계층형 댓글, 대댓글 구현(2)이번엔 전편에 이어서 계층형 댓글, 대댓글을 다시 리팩토링해볼 예정이다. 이전 게시글에서는 계층형 댓글, 대댓글을 구현은 되었지만 N+1 문제가 있었다. 이번에는 그 N+1 문제를 해결해 볼 것이다. 위의 로직은 이...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.