본문 바로가기
Spring

스프링 스케줄러, 스레드 사용법

by 코리늬 2019. 2. 5.

스프링 스케줄러 사용법

mvc-config.xml

xmlns:task="http://www.springframework.org/schema/task"
xsi:schemaLocation="http://www.springframework.org/schema/task
      http://www.springframework.org/schema/task/spring-task-3.0.xsd"
       
<task:annotation-driven />

컨트롤러에 @Service 추가

@Service
public class TargetController {
....
}

@PostConstruct, @Scheduled(fixedDelay=5000)

해당 메소드가 서버 시작할 때 시작하고 싶을 때 @PosrtConstruct를 사용하면 WAS가 띄워질 때 실행된다.

스케줄러를 돌릴 메소드에 @Scheduled추가

1000이 1초에 해당해 아래의 경우 5초마다 해당 메소드가 실행됨


@PostConstruct
private void resendThread() {
// TODO Auto-generated method stub

//스레드 주기 설정, 5=5초
int sleepSec = 5;


//스레드 갯수 설정
final ScheduledThreadPoolExecutor exec = new                               ScheduledThreadPoolExecutor(2);

//스레드 실행 -> run 메소드를 정의해줘야함
exec.scheduleAtFixedRate(new Runnable() {
@Scheduled(fixedDelay=5000)
public void run() {
try {
          ...
    } catch (Exception e) {


e.printStackTrace();


// 에러 발생시 Executor를 중지시킨다

exec.shutdown();

}

}

}, 0, sleepSec, TimeUnit.SECONDS);

}

@PreDestroy

반대로 스프링 컨테이너에서 객체를 제거하기 전에 해야할 작업이 있다면

close()하기전에 ((AbstractApplicationContext) context. close())

생각보다 설정이 간단해서 놀랐다.

댓글