π νμ¬ νλ μμν¬ κΈ°λ° κ²μνμ λ§λ ν, μΉμμ μ€μΌμ€λ§μ λ€λ£°μΌμ΄ μμ΄μ 미리 곡λΆνλ€.
CronTriggerλ βλ§€μΌ κΈμμΌ μ μ€β, λλ βλ§€ μ£Όλ§ μ€μ 9μβ, β1μ νλ¬κ° λ§€μ£Ό μμμΌ, μμμΌ, κΈμμΌ μ€μ 9μμμ 10μ μ¬μ΄ 5λΆ κ°κ²©βκ³Ό κ°μ΄ μ€μΌμ€μ μ€μ ν μ μμ΅λλ€.
Cronννμμ CronTrigger μΈμ€ν΄μ€λ₯Ό μ€μ νλλ° μ¬μ©λ©λλ€. Cronννμμ 7κ°μ λ¨μ ννμμΌλ‘ ꡬμ±λ λ¬Έμμ΄ μ
λλ€. κ° λ¨μλ μ€μΌμ€μ μΈλΆν νμ¬ μμΈνκ² κΈ°μ ν©λλ€. μ΄ λ¨μ ννμμ 곡백μΌλ‘ ꡬλΆλ©λλ€.
μ΄(Seconds)
λΆ(Minutes)
μ(Hours)
μΌ(Day-of-Month)
μ(Months)
μμΌ(Days-of-Week)
μ°λ(Year) - optional
μ΄λ€μ μ‘°ν©ν Cronννμμ β0 0 12 ? * WEBβμ κ°μ΄ ννλ©λλ€. μ΄κ²μ βλ§€μ£Ό μμμΌ μ μ€βλ₯Ό μλ―Έ ν©λλ€. (μ°λλ μλ΅)
β/β λ¬Έμλ κ°μ μ¦κ° ννμ μ¬μ©λ μ μμ΅λλ€. μλ₯Όλ€μ΄, λΆ(Minutes) νλμ β0/15β λ₯Ό μ¬μ©νλ€λ©΄, μ΄κ²μ β0λΆ λΆν° μμνμ¬ (μκ°μ) λ§€ 15λΆ λ§λ€βλ₯Ό μλ―Έν©λλ€.
β?βλ¬Έμλ μΌ(day-of-month)μ μμΌ(day-of-week) νλμμλ§ νμ©λ©λλ€.
Cron ννμ μμ
*λ§€ 5λΆ λ§λ€ μ€ν
β0 0/5 * ?β
*10μ΄λ€ 5λΆλ§λ€ μ€ν. (10:00:10 am, 10:05:10 am, β¦)
β10 0/5 * ?β
*λ§€μ£Ό μμμΌκ³Ό κΈμμΌ 10:30, 11:30, 12:30, 13:30 μ μ€ν
β0 30 10-13 ? * WED,FRIβ
*λ§€μ 5μΌ, 20μΌ μ€μ 8μλΆν° μ€μ 10μ μ¬μ΄μ 30λΆ κ°κ²©μΌλ‘ μ€ν. μ΄ νΈλ¦¬κ±°λ 10:00 amμλ μ€νμ΄ λμ§ μκ³ , 8:00, 8:30, 9:00, 9:30 μλ§ μ€ν λλ€.
β0 0/30 8-9 5,20 * ?β
<!-- Scheduler -->
<dependency>
<groupId>org.quartz-scheduler</groupId>
<artifactId>quartz</artifactId>
<version>${quartz.version}</version>
</dependency>
test.trigger.cronexpr=0 * * * * ?
<!-- 1. Cron λμμ΄ λλ ν΄λμ€ μ μ -->
<bean name="testScheduleJob" class="org.springframework.scheduling.quartz.JobDetailFactoryBean">
<property name="jobClass" value="com.jihoon.web.scheduler.testScheduleJob" />
<property name="jobDataAsMap">
<map> <entry key="service" value-ref="searchEventTagService" /> </map>
</property>
</bean>
<!-- 2. Cron μκ° μ€μ -->
<bean id="test" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">
<property name="jobDetail" ref="testScheduleJob" />
<property name="cronExpression" value="${test.trigger.cronexpr}" />
</bean>
<!-- 3. Cron μ€ν -->
<bean id="schedulerFactory" class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
<property name="quartzProperties">
<props> <prop key="xxxxx">xx</prop> </props>
</property>
<property name="triggers">
<list>
<ref bean="test" />
</list>
</property>
</bean>
package com.seculayer.web.scheduler;
import org.apache.log4j.Logger;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import org.springframework.scheduling.quartz.QuartzJobBean;
import com.xxx.web.system.SearchEventTagService;
public class testScheduleJob extends QuartzJobBean{
static Logger logger = Logger.getLogger(testScheduleJob.class);
private Object svc;
public void setService(Object svc) {
this.svc = svc;
}
protected void executeInternal(JobExecutionContext context)
throws JobExecutionException {
logger.info("TestScheduleJob Excute Start!!!");
try {
((SearchEventTagService)svc).jihoon();
}catch (Exception e) {
e.printStackTrace();
}
logger.info("TestScheduleJob Excute End!!!");
}
}
public void jihoon() {
System.out.println("jihoonjihoonjihoon");
}