Spring 통합 TimerTask 정시 작업 스케줄링

하나.앞말
최근 회사의 프로젝트에서 정시 임무를 사용했습니다. 본 논문은 TimerTask 정시 임무를 총괄할 것입니다. 사실 TimerTask는 실제 프로젝트에서 많이 사용되지 않습니다.
지정된 시간에 실행할 수 없기 때문에, 프로그램이 특정한 주파수에 따라 실행될 수 있을 뿐이다.
2.TimerTask
JDK에서 Timer는 타이머 클래스로 지정된 타이머 작업을 구성할 수 있습니다.
JDK에서 TimerTask는 정시 임무 클래스입니다. 이 클래스는 Runnable 인터페이스를 실현하고 추상적인 클래스입니다. 우리는 이 클래스를 계승하여 정시 임무를 실현할 수 있습니다.

/** 
 *  TimerTask  
 */ 
public class MyTask extends TimerTask { 
 
  @Override 
  public void run() { 
    String currentTime = new SimpleDateFormat("yyy-MM-dd hh:mm:ss").format(new Date()); 
    System.out.println(currentTime + "  ..."); 
  } 
 
  public static void main(String[] args) { 
    Timer timer = new Timer(); 
     
    // 1 ,  : task, delay, peroid 
    timer.schedule(new MyTask(), 2000, 1000); 
  } 
} 
셋.Spring 통합
두 가지 핵심 클래스: ScheduledTimerTask, TimerFactoryBean
ScheduledTimerTask 클래스는 TimerTask에 대한 패키지로 이루어집니다. 이 클래스를 통해 이 작업에 트리거 정보를 정의할 수 있습니다.
TimerFactoryBean 클래스는 Spring에서 구성을 사용하여 트리거를 생성하고 지정된 ScheduledTimerTask bean 그룹에 Timer 인스턴스를 자동으로 생성합니다.
1. Jar 가방 도입: 스프링.jar, commons-logging.jar
2. 스케줄링 업무 클래스:

/** 
 *   
 */ 
public class TaskService extends TimerTask { 
  private int count = 1; 
 
  public void run() { 
    System.out.println(" " + count + " "); 
    count++; 
  } 
} 
3. 핵심 구성:

<?xml version="1.0" encoding="UTF-8"?> 
<beans xmlns="http://www.springframework.org/schema/beans" 
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
  xsi:schemaLocation="http://www.springframework.org/schema/beans  
  http://www.springframework.org/schema/beans/spring-beans-2.5.xsd"> 
   
  <bean id="taskService" class="com.zdp.service.TaskService"></bean> 
  <bean id="scheduledTimerTask" class="org.springframework.scheduling.timer.ScheduledTimerTask"> 
    <property name="timerTask" ref="taskService" /> 
     
    <!--  : 24*60*60*1000 --> 
    <!--  1  --> 
    <property name="period" value="1000" /> 
     
    <!--  4  --> 
    <property name="delay" value="4000" /> 
  </bean> 
   
  <bean id="timerFactoryBean" class="org.springframework.scheduling.timer.TimerFactoryBean"> 
    <property name="scheduledTimerTasks"> 
      <list> 
        <ref bean="scheduledTimerTask" /> 
      </list> 
    </property> 
  </bean> 
</beans> 
4. 테스트 클래스:

public class Main { 
  public static void main(String[] args) { 
    //  spring  
    ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml"); 
    System.out.println("<<--------   -------- >>"); 
    BufferedReader reader = new BufferedReader(new InputStreamReader(System.in)); 
    while (true) { 
      try { 
        if (reader.readLine().equals("quit")) { 
          System.out.println("<<--------   -------- >>"); 
          System.exit(0); 
        } 
      } catch (IOException e) { 
        throw new RuntimeException("error happens...", e); 
      } 
    } 
  } 
} 
이상은 본문의 전체 내용입니다. 여러분의 학습에 도움이 되고 저희를 많이 응원해 주십시오.

좋은 웹페이지 즐겨찾기