2025-04-29
@Scheduled
์ด๋
ธํ
์ด์
์ ์ฌ์ฉํ์ฌ ๊ฐํธํ๊ฒ ์ค์ผ์ค๋ง ์์
์ ๊ตฌํํ ์ ์๋ค.root-context.xml
์ ์ถ๊ฐ ์ค์ :
<context:component-scan base-package="com.example.app.scheduled" />
package com.example.app.scheduled;
import org.springframework.scheduling.annotation.EnableScheduling;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
@Component
@EnableScheduling
public class Scheduling {
// 1์ด๋ง๋ค ๋ฉ์๋ ์คํ (์ฃผ์์ฒ๋ฆฌ๋ ์์)
//@Scheduled(fixedRate = 1000)
//public void t1() {
// System.out.println("Scheduling's t1() invoke..");
//}
// 3์ด๋ง๋ค ๋ฉ์๋ ์คํ
@Scheduled(cron = "*/3 * * * * *")
public void t2() {
System.out.println("Scheduling's t2() invoke..");
}
}
๐น ์ฐธ๊ณ :
cron ํํ์์ "์ด(0-59) ๋ถ(0-59) ์(0-23) ์ผ(1-31) ์(1-12) ์์ผ(0-6, ์ผ์์ผ=0)" ์์๋ก ์์ฑ๋๋ค.
@Scheduled
์ฃผ์ ์์ฑ ์ ๋ฆฌ์์ฑ | ์ค๋ช |
---|---|
fixedRate | ๋ฉ์๋ ์์ ์๊ฐ ๊ธฐ์ค ์ฃผ๊ธฐ์ ์ผ๋ก ์คํ (ms ๋จ์) |
fixedDelay | ๋ฉ์๋ ์ข ๋ฃ ํ ๋๊ธฐ ์๊ฐ ๊ธฐ์ค ์ฃผ๊ธฐ์ ์ผ๋ก ์คํ (ms ๋จ์) |
initialDelay | ์ ํ๋ฆฌ์ผ์ด์ ์์ ํ ์ฒซ ์คํ๊น์ง ๋๊ธฐ ์๊ฐ (ms ๋จ์) |
cron | ์ ๊ตํ ์๊ฐ ์ ์ด (์ด, ๋ถ, ์, ์ผ, ์, ์์ผ) |
ํํ์ | ์ค๋ช |
---|---|
0/5 * * * * * | ๋งค 5์ด ๊ฐ๊ฒฉ์ผ๋ก ์คํ (0์ด๋ถํฐ ์์ ) |
0 0/1 * * * * | ๋งค 1๋ถ๋ง๋ค 0์ด์ ์คํ |
0 0 9 * * * | ๋งค์ผ ์ค์ 9์์ ์คํ |
@Scheduled
๋ฅผ ํตํด ์ฝ๊ฒ ์ค์ ํ ์ ์๋ค.fixedRate
, fixedDelay
, initialDelay
, cron
์์ฑ์ ๋ชฉ์ ์ ๋ง๊ฒ ๊ตฌ๋ถํ์ฌ ์ฌ์ฉํ ์ ์์ด์ผ ํ๋ค.@Scheduled
๋ฅผ ํ์ฉํด ์์ฝ๊ฒ ๋ฐ๋ณต ์์
์ ๊ตฌํํ ์ ์๋ค๋ ์ ์ด ์ธ์ ๊น์๋ค.cron
ํํ์์ ํ์ฉํ๋ฉด ๋ค์ํ ์กฐ๊ฑด์ผ๋ก ์ธ๋ฐํ๊ฒ ์ค์ผ์ค์ ์กฐ์ ํ ์ ์์ด ์ค๋ฌด์ ๋งค์ฐ ์ ์ฉํ ๊ฒ์ผ๋ก ๋ณด์ธ๋ค.@Scheduled
๋ก ์์ฝ๊ฒ ์ค์ผ์ค๋ง ๊ธฐ๋ฅ ๊ตฌํ ๊ฐ๋ฅ