티스토리 뷰

프로그램

자바 Spring3.x 스케줄링

박대감 2014. 2. 12. 17:30



자바 개발을 하다가 보면 스케줄러가 필요하다.

예전 서블릿 시절에는 crob를 사용해서 자바 프로그램(main)을 실행하였다. 

참으로 기본적으로 많은 것을 알아야 되던 시절이였다. 

지금도 crob를 사용하는 곳도 많다.

그런데 crob이 문제가 에러가 났을 때 로그 관리가 애매하다.


그런데 spring이 개발되고, log4j, common-logging, backlog 등 여러 로그 관리 툴이 개발되면서 개발자는 많이 편해졌다.

spring, log4j 등을 잘 알지 못하더라도 개발이 가능(?)해진 것이다.


그래서 spring, 스케줄러(crob)를 몰라도 자바에서 스케줄러가 되도록 만들어 보자.


우선 spring이 개발 중인 프로젝트에서 context-schedule.xml 이름으로 spring 설정파일을 생성한다. 굳이 context-schedule.xml가 아니여도 된다. web.xml에서 호출하는 이름으로 생성하면 된다.


context-schedule.xml

<?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:context="http://www.springframework.org/schema/context"

    xmlns:task="http://www.springframework.org/schema/task"

    xsi:schemaLocation="

        http://www.springframework.org/schema/beans 

        http://www.springframework.org/schema/beans/spring-beans.xsd

        http://www.springframework.org/schema/context 

        http://www.springframework.org/schema/context/spring-context-3.0.xsd

        http://www.springframework.org/schema/task 

        http://www.springframework.org/schema/task/spring-task-3.0.xsd">


    <context:component-scan base-package="kr.co.navxxx(개발된 프로그램의 패키지)" />

    <task:annotation-driven />

</beans>


빨간색 표시가 된 구문들이 필요하다.


package kr.co.navxxx;


import java.util.List;


@Component

public class ClosureView {

static Logger logger = Logger.getLogger(ClosureView.class);

@Autowired

    private ScheduleService scheduleService;

@Scheduled(cron="0 0 2 * * 2,3,4,5,6")

public void getClosureDate() throws Exception {

..............


closureView("342452452345");


......................

}

public CustomVO closureView(String spTransfer_No) {

String today = Util.getToday("yyyy-MM-dd");

.......

   

           try {

    ..............

   

   } catch(Exception e) {

    e.printStackTrace();

   }

   

   return returnVO;

}

}


스케줄러 작업이 끝이 났다.

여기서 @Scheduled(cron="0 0 2 * * 2,3,4,5,6")에서는 프로그램이 실행되는 시간을 설정한다. 예전 crob과 설정 방법은 동일하다.



필드이름

허용 값

초(Seconds)0 ~ 59
분(Minutes)0 ~ 59

시(Hours)

0 ~ 23

날(Day-of-month)

1 ~ 31
달(Month)1 ~ 12 or JAN ~ DEC

요일(Day-of-week)

1 ~ 7 or SUN-SAT
년도(Year) (선택가능)빈값, 1970 ~ 2099


표현식

설명

예시

*모든 수를 나타냄
-값의 사이를 의미* 10-13 * * * * 10,11,12,13분에 동작함
,특정값 지칭* 10,11,13 * * * * 10,11,13분에 동작함
/값의 증가를 표현* 0/5 * * * * 0분부터 시작해서 5분마다 동작
?특별한 값이 없음을 나타냄(day-of-month, day-of-week 필드만 사용)
L마지막 날을 나타냄(day-of-month, day-of-week 필드만 사용)



[이클립스] - 이클립스(eclipse)에서 Camel기법 <-> Underscores기법 호환 플러그인

[이클립스] - 자바 프레임웍(Struts, Spring) 따라하기식 예제 사이트

[이클립스] - 이클립스 xxx.min.js 파일때문에 나타나는 프로젝트 에러표시 없애기





'프로그램' 카테고리의 다른 글

MSSQL 형변환  (0) 2014.02.18
iBatis에서 ‘#’과 ‘$’ Escape 하기 삽질  (0) 2014.02.13
SWT 프로그램 기초  (0) 2014.02.11
비주얼 베이직의 암호화 기법(?)  (0) 2014.02.11
다익스트라(Dijkstra) 알고리즘  (0) 2014.02.08
댓글