티스토리 뷰

프로그램

자바 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
댓글
반응형
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함