์คํ๋ง์์ ํน์ ์๊ฐ ํน์ ๋ช ๋ถ, ๋ช ์๊ฐ ๋ง๋ค ๊ธฐ๋ฅ์ ๋์ ์ํค๋ ค๋ฉด Spring์์ ์ ๊ณตํ๋ scheduler๋ฅผ ์ด์ฉํ๋ฉด ๋๋ค.
(Spring 3.1๋ถํฐ๋ Quartz์์ด ๊ฐ๋จํ๊ฒ ์ค์ผ์ค๋ฌ ๊ตฌํ์ด ๊ฐ๋ฅํ๋ค.)
โ
๋จผ์ applicationContext์ ์ค์ผ์ค๋ฌ๋ฅผ ๋ฑ๋กํ๋ค. (Component Scan์ด ์ ์ธ๋์ด ์๋ ํ์ผ)
- applicationContext.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:util="http://www.springframework.org/schema/util"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:tx="http://www.springframework.org/schema/tx"
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.xsd
http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd
http://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task.xsd">
<!-- =================================================================== -->
<!-- Component Scan -->
<!-- =================================================================== -->
<context:component-scan base-package="com.company.test" >
<context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller" />
</context:component-scan>
<!-- =================================================================== -->
<!-- Scheduler -->
<!-- =================================================================== -->
<task:scheduler id="scheduler" pool-size="2" />
<task:scheduled-tasks scheduler="scheduler" >
<task:scheduled ref="testJob" method= "doJob" cron="0 0/30 * * * *" />
</task:scheduled-tasks>
</beans>
=> testJob์ doJob ๋ฉ์๋๋ฅผ 30๋ถ๋ง๋ค ์คํํ๋ ์ค์ผ์ค๋ฌ๋ฅผ ๋ฑ๋กํ๋ค. testJob์ ์๋์ ๊ฐ๋ค.
- TestJob.java
@Service("testJob")
public class TestJob {
public synchronized void doJob() {
System.out.println("###################################################");
System.out.println("Scheduler");
System.out.println("###################################################");
}
}
Cron Expression (์ถ์ฒ : https://blog.naver.com/cyon24/203674742)
์ผ์ชฝ๋ถํฐ ์ค๋ฅธ์ชฝ์์ผ๋ก ๋ค์๊ณผ ๊ฐ์ ์๋ฏธ๊ฐ ์๋ค
Seconds
|
0 ~ 59
|
Minutes
|
0 ~ 59
|
Hours
|
0 ~ 23
|
Day of Month
|
1 ~ 31
|
Month
|
1 ~ 12
|
Day of Week
|
1 ~ 7 (1 => ์ผ์์ผ, 7=> ํ ์์ผ / MON,SUN...)
|
Years(optional)
|
1970 ~ 2099
|
โ
ํน์๋ฌธ์์ ์ฌ์ฉ์ ์๋์ ๊ฐ์ ์๋ฏธ๊ฐ ์๋ค.
*
|
๋ชจ๋ ์๋ฅผ ์๋ฏธ, Minutes ์์น์ ์ฌ์ฉ๋ ๊ฒฝ์ฐ ๋งค๋ถ๋ง๋ค ๋ผ๋ ๋ป
|
?
|
Day of Month, Day of Week์๋ง ์ฌ์ฉ ๊ฐ๋ฅ, ํน๋ณํ ๊ฐ์ด ์๋ค๋ ๋ป
|
-
|
๊ธฐ๊ฐ์ ์ค์ , Hour ์์น์ 10 - 12 ๋ผ๊ณ ์ฐ๋ฉด 10, 11, 12dp ๋์ํ๋ผ๋ ๋ป
|
,
|
ํน์ ์๊ฐ์ ์ค์ . Day of Week ์์น์ 2, 4, 6 ์ด๋ผ๊ณ ์ฐ๋ฉด ์, ์, ๊ธ์๋ง ๋์ํ๋ผ๋ ๋ป
|
/
|
์ฆ๊ฐ๋ฅผ ํํ, Seconds ์์น์ 0/15๋ก ์ค์ ๋์ด ์์ผ๋ฉด, 0์ด์ ์์ํด์ 15์ด ๊ฐ๊ฒฉ์ผ๋ก ๋์ ํ๋ผ๋ ๋ป
|
L
|
Day Of Month ์์๋ง ์ฌ์ฉํ๋ฉฐ, ๋ง์ง๋ง ๋ ์ ์๋ฏธ Day of Month ์ L๋ก ์ค์ ๋์ด ์์ผ๋ฉด ๊ทธ๋ฌ์ ๋ง์ง๋ง๋ ์ ์คํํ๋ผ๋ ๋ป
|
W
|
Day of Month ์๋ง ์ฌ์ฉํ๋ฉฐ, ๊ฐ์ฅ ๊ฐ๊น์ด ํ์ผ์ ์๋ฏธ. 15W๋ก ์ค์ ๋์ด ์๊ณ 15์ผ์ด ํ ์์ผ์ด๋ฉฐ, ๊ฐ์ฅ ๊ฐ๊น์ด ํ์ผ์ธ 14์ผ ๊ธ์์ผ์ ์คํ, 15์ผ์ด ์ผ์์ผ์ด๋ฉด 16์ผ ์์์ผ์ ์คํ๋๋ค.
15์ผ์ด ํ์ผ์ด๋ฉด ๊ทธ๋ ๊ทธ๋๋ก ์คํ๋จ
|
LW
|
L๊ณผ W๋ฅผ ๊ฒฐํฉํ์ฌ ์ฌ์ฉ, ๊ทธ๋ฌ์ ๋ง์ง๋ง ํ์ผ์ ์๋ฏธ
|
#
|
Day of Week์ ์ฌ์ฉ, 6#3 ์ ๊ฒฝ์ฐ 3๋ฒ์งธ ์ฃผ ๊ธ์์ผ์ ์คํ๋๋ค.
|
โ
์ฌ์ฉ ์)
0 0 12 * * * ==> ๋งค์ผ 12์์ ์คํ
0 15 10 * * * ==> ๋งค์ผ 10์ 15๋ถ์ ์คํ
0 * 14 * * * ==> ๋งค์ผ 14์์ ์คํ
0 0/5 14 18 * * * ==> ๋งค์ผ 14์, 18์์ ์์ํด์ 5๋ถ๊ฐ๊ฒฉ์ผ๋ก ์คํ
0 0-5 14 * * * ==> ๋งค์ผ 14์์ ์์ํด์ 0๋ถ๋์ ์คํ
'๊ฐ๋ฐ > Web' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Spring Boot] spring security - CSRF ์ ์ฉ , +) ajax csrf ์ ์ฉ (0) | 2021.12.07 |
---|---|
[Spring Boot] mybatis ์ ์ฉํ๊ธฐ (0) | 2021.12.06 |
[JSP/HTML] ERR_CACHE_MISS ์๋ฌ ๋ฐ์ (0) | 2021.12.01 |
[Apache] web-was ์ฐ๋, socket_timeout ์ค์ ์ด์ (0) | 2021.11.30 |
[Tomcat] JNDI ์ ๋ณด ์ํธํ(DB์ ๋ณด : url, username, passowrd) / KDF ์๊ณ ๋ฆฌ์ฆ ์ด์ฉ (0) | 2021.11.30 |
๋๊ธ