0. Quartz
Quartz는 스케줄러를 위한 라이브러리이다. 일정한 시간이나 날짜마다 작업을 수행하기 위해 사용한다.
1. 의존 라이브러리 추가
pom.xml에 다음과 같이 라이브러리를 추가한다.
<dependency>
<groupId>org.quartz-scheduler</groupId>
<artifactId>quartz</artifactId>
<version>2.3.2</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context-support</artifactId>
<version>5.2.5.RELEASE</version>
</dependency>
2. Quartz 스케줄러 설정
root-context.xml에서 Quartz 스케줄러를 설정한다.
<!-- 스케줄러 팩토리 -->
<bean id="schedulerFactory" class="org.quartz.impl.StdSchedulerFactory" />
<!-- 수행 작업 명세 -->
<bean id="jobDetail" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
<!-- 작업을 수행할 클래스 -->
<property name="targetObject">
<bean class="com.web.springtest.MyScheduleService" />
</property>
<!-- 스케줄에 실행할 클래스의 메서드 -->
<property name="targetMethod" value="doSomething" />
<!-- 동시작업 수행 여부 -->
<property name="concurrent" value="false" />
</bean>
<!-- 작업 주기 설정 -->
<bean id="cronTrigger" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">
<!-- 사용할 JobDetail -->
<property name="jobDetail" ref="jobDetail" />
<!-- 오전 8시부터 오후 6시까지 30분 간격으로 -->
<property name="cronExpression" value="0 */30 8-18 * * ?" />
</bean>
<!-- 서버 실행 직후 1회 수행 -->
<bean id="startup" class="org.springframework.scheduling.quartz.SimpleTriggerFactoryBean">
<property name="jobDetail" ref="jobDetail" />
<property name="startDelay" value="0" />
<property name="repeatCount" value="0" />
</bean>
<!-- 스케줄러 등록 -->
<bean id="scheduler" class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
<!-- 스케줄러 팩토리 -->
<property name="schedulerFactory" ref="schedulerFactory" />
<!-- 사용할 트리거 -->
<property name="triggers">
<list>
<ref bean="cronTrigger" />
<ref bean="startup" />
</list>
</property>
</bean>
'Java > Spring Framework' 카테고리의 다른 글
[Spring Framework] 스프링 시큐리티에서 로그인 성공 후 로그인 전 요청했던 URL로 리다이렉트 하기 (0) | 2023.03.24 |
---|---|
[Spring Framework] UserDetailsService에서 HttpServletRequest 받기 (0) | 2023.03.24 |
[Spring Framework] 스프링 시큐리티 다중 로그인 화면 (0) | 2023.02.23 |
[Spring Framework] 스프링 시큐리티에서 동시 접속 제한하기 (0) | 2023.02.17 |
[Spring Framework] 스프링 시큐리티 적용 후 서버에서 회원 정보 확인하기 (0) | 2023.02.15 |