๐Ÿ‘จ‍๐Ÿ‘ฉ‍๐Ÿ‘ง‍๐Ÿ‘ฆ Project/๐Ÿ“บ KIOSEK

์ž๋™ ๋ฐ˜๋‚ฉ ์ฒ˜๋ฆฌ ๋ฐ ์ œ์žฌ ์Šค์ผ€์ค„๋ง ๊ธฐ๋Šฅ ๊ตฌํ˜„

DevPoong 2022. 12. 7. 13:19

1. ๋ฌธ์ œ ์ƒํ™ฉ

์‚ฌ์šฉ์ž๊ฐ€ ๋ฐ˜๋‚ฉ์„ ์ง์ ‘ ์ •ํ•ด์ง„ ์‹œ๊ฐ„ ๋‚ด๋กœ ํ•˜์ง€ ์•Š์•˜์„ ๊ฒฝ์šฐ ์‚ฌ์šฉ์ž์—๊ฒŒ ํŽ˜๋„ํ‹ฐ๋ฅผ ์ฃผ๊ณ  ์„œ๋ฒ„์—์„œ ์ž๋™์œผ๋กœ ๋ฐ˜๋‚ฉํ•˜๋Š” ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•ด์•ผ ํ•œ๋‹ค.

์–ด๋–ป๊ฒŒ ๊ตฌํ˜„ํ•ด์•ผ ํ• ๊นŒ ๊ณ ๋ฏผํ•˜๋‹ค๊ฐ€ "API๋ฅผ ๊ตฌํ˜„ํ•ด ๋†“๊ณ  cron ๋ช…๋ น์œผ๋กœ ์ •ํ•ด์ง„ ์‹œ๊ฐ„๋งˆ๋‹ค ํ˜ธ์ถœํ•ด์•ผ ํ• ๊นŒ?"๋ผ๊ณ  ์ƒ๊ฐํ–ˆ๊ณ ,
Spring์—๋Š” ์ด๋Ÿฌํ•œ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•ด์ฃผ๋Š” ๊ฒƒ์ด ์—†๋Š”์ง€ ์ฐพ์•„๋ณด์•˜๋‹ค

2. ์–ด๋–ป๊ฒŒ ๊ตฌํ˜„ํ• ๊นŒ?

์šฐ์„  Spring์— ์Šค์ผ€์ค„๋ง์„ ๋„์™€์ฃผ๋Š” ๊ธฐ๋Šฅ์ด ์žˆ๋Š”์ง€ ์•Œ์•„๋ณด์•˜๋‹ค.

@Scheduled ์–ด๋…ธํ…Œ์ด์…˜์„ ์‚ฌ์šฉํ•˜๋ฉด ์ผ์ •ํ•œ ์‹œ๊ฐ„ ๊ฐ„๊ฒฉ ๋˜๋Š” ํŠน์ • ์‹œ๊ฐ„์— ํ•ด๋‹น ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•˜๋„๋ก ์„ค์ •ํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ํ•œ๋‹ค.

3. @Scheduled๋ฅผ ์ ์šฉํ•ด๋ณด์ž

(1) ๋จผ์ € Main Application class์— @EnableScheduling ์–ด๋…ธํ…Œ์ด์…˜์„ ์ถ”๊ฐ€ํ•œ๋‹ค.

@SpringBootApplication
@EnableScheduling
public class ServerApplication {
    public static void main(String[] args) {
        SpringApplication.run(ServerApplication.class, args);
    }
    ...
}

 

(2) ์Šค์ผ€์ค„๋ง ์ž‘์—…์„ ํ•  class์˜ ํ•ด๋‹น ๋ฉ”์„œ๋“œ์— @Scheduled ์–ด๋…ธํ…Œ์ด์…˜์„ ์ถ”๊ฐ€ํ•˜๊ณ  ์˜ต์…˜์„ ๊ฒฝ์šฐ์— ๋”ฐ๋ผ ์ถ”๊ฐ€ํ•œ๋‹ค.

@Service
@Transactional(readOnly = true)
@RequiredArgsConstructor
public class AutoTableReturnSchedulingService {

   ......

    @Scheduled(cron = "0 20,50 * * * *")
    @Transactional
    public void autoTableReturn() {
        
    }

	...
}

@Scheduled๋ฅผ ์ถ”๊ฐ€ํ•œ ๋ฉ”์„œ๋“œ๋ฅผ ๊ฐ€์ง„ ํด๋ž˜์Šค๋Š” ์Šคํ”„๋ง Bean์œผ๋กœ ๋“ฑ๋กํ•ด์•ผ ํ•˜๋ฏ€๋กœ @Service๋ฅผ ๋ถ™์—ฌ์ฃผ์—ˆ๋‹ค. (@Component ๋ถ™์—ฌ๋„ ๋จ)

์œ„์˜ ์ฝ”๋“œ๋ฅผ ๋ณด๋ฉด @Scheduled ์–ด๋…ธํ…Œ์ด์…˜ ๋‚ด์— cron = "...." ์ด ์ถ”๊ฐ€๋˜์–ด ์žˆ๋‹ค.
๋ช‡ ๋ถ„๋งˆ๋‹ค ์ฃผ๊ธฐ์ ์œผ๋กœ ์‹คํ–‰ํ•  ๊ฒƒ์ด๋ผ๋ฉด fixedDelay, fixedRate์™€ ๊ฐ™์€ ์˜ต์…˜์ด ์žˆ๊ฒ ์ง€๋งŒ,


๋‚˜์˜ ๊ฒฝ์šฐ์—๋Š” ํŠน์ • ์‹œ๊ฐ„๋Œ€์— ์ฃผ๊ธฐ์ ์œผ๋กœ ์‹คํ–‰ํ•  ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์— Cron ํ‘œํ˜„์‹์„ ์‚ฌ์šฉํ•˜์—ฌ ์ž‘์—…์„ ๋“ฑ๋กํ•˜์˜€๋‹ค.

*์ด 6๊ฐœ ์žˆ๋Š”๋ฐ

์ดˆ(0-59), ๋ถ„(0-59), ์‹œ๊ฐ„(0-23), ์ผ(1-31), ์›”(1-12), ์š”์ผ(0-6)์„ ์˜๋ฏธํ•œ๋‹ค.
๋”ฐ๋ผ์„œ ์œ„์˜ autoTableReturn ๋ฉ”์„œ๋“œ๋Š” ๋งค์ผ ๋งค์‹œ 20๋ถ„, 50๋ถ„๋งˆ๋‹ค ํ˜ธ์ถœ๋œ๋‹ค.