728x90
반응형
SMALL
스케줄러를 구성하기 위해서 사용된다.
서버를 운영하기 위해선 간혹 주기적으로 매일, 매주, 매월 등 특정 프로그램을 실행 할 필요가 있다.
운영체제의 기능을 이용해서 작업할 수도 있으나 스프링과 Quartz 라이브러리를 이용하면 간단히 처리할 수 있다.
1.pom.xml 의존성 등록
<!-- https://mvnrepository.com/artifact/org.quartz-scheduler/quartz -->
<dependency>
<groupId>org.quartz-scheduler</groupId>
<artifactId>quartz</artifactId>
<version>2.3.2</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.quartz-scheduler/quartz-jobs -->
<dependency>
<groupId>org.quartz-scheduler</groupId>
<artifactId>quartz-jobs</artifactId>
<version>2.3.2</version>
</dependency>
2.root-context.xml 어노테이션 등록(<task:annotaion-driven>)
<?xml version="1.0" encoding="UTF-8"?>
<beans
xsi:schemaLocation="http://mybatis.org/schema/mybatis-spring
http://mybatis.org/schema/mybatis-spring-1.2.xsd
http://www.springframework.org/schema/task
http://www.springframework.org/schema/task/spring-task-4.3.xsd
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-4.3.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.3.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.3.xsd"
xmlns:task="http://www.springframework.org/schema/task"
xmlns:mybatis-spring="http://mybatis.org/schema/mybatis-spring"
xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://www.springframework.org/schema/beans">
<context:annotation-config/>
<bean class="com.zaxxer.hikari.HikariConfig" id="hikariConfig">
<property value="net.sf.log4jdbc.sql.jdbcapi.DriverSpy" name="driverClassName"/>
<property value="jdbc:log4jdbc:oracle:thin:@localhost:1521:XE" name="jdbcUrl"/>
<property value="book_ex" name="username"/>
<property value="book_ex" name="password"/>
</bean>
<!-- HikariCP configuration -->
<bean class="com.zaxxer.hikari.HikariDataSource" id="dataSource" destroy-method="close">
<constructor-arg ref="hikariConfig"/>
</bean>
<bean class="org.mybatis.spring.SqlSessionFactoryBean" id="sqlSessionFactory">
<property name="dataSource" ref="dataSource"/>
</bean>
<bean class="org.springframework.jdbc.datasource.DataSourceTransactionManager" id="transactionManager">
<property name="dataSource" ref="dataSource"/>
</bean>
<tx:annotation-driven/>
<mybatis-spring:scan base-package="org.zerock.mapper"/>
<context:component-scan base-package="org.zerock.service"/>
<context:component-scan base-package="org.zerock.aop"/>
<context:component-scan base-package="org.zerock.task"/>
<aop:aspectj-autoproxy/>
<task:annotation-driven/>
</beans>
3.task 패키지 내의 FileCheckTask 클래스를 만들어 스케줄러 동작
@Scheduled 어노테이션 내에는 cron 이라는 속성을 부여하여 주기를 제어할 수 있음.
로그의 기록은 log.warn() 레벨을 이용함
FileCheckTask의 동작을 확인하기 위해 root-context.xml 에 스프링 빈으로 등록되어있음
<context:component-scan base-package="org.zerock.task"/>
테스트 시작
cron 초 분 시 일 월 (주단위)
package org.zerock.task;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
import lombok.extern.log4j.Log4j;
@Log4j
@Component
public class FileCheckTask {
//매분 0초가 될 때마다 실행한다
@Scheduled(cron="0 * * * * *")
public void checkFiles() {
log.warn("File check Task run......");
log.warn("=============================");
}
}
1분 주기로 로그가 실행되는것이 확인됨
728x90
반응형
LIST
'SPRING > 스프링' 카테고리의 다른 글
[스프링] 12. 스프링 부트로 환경설정 해보기 (0) | 2021.04.27 |
---|---|
[스프링] 11. 스프링 시큐리티 (0) | 2021.04.26 |
[스프링] 오류. org.springframework.web.context.ContextLoaderListener (0) | 2021.04.17 |
[스프링] 9. 트랜잭션 설정 (0) | 2021.04.17 |
[스프링] 8. 글 등록 중복 알람 문제(자바스크립트 관련)!! (0) | 2021.04.07 |