2024-07-08
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
현대 소프트웨어 개발에서 예약된 작업은 애플리케이션 자동화 및 운영 효율성의 핵심 구성 요소입니다. 데이터 백업, 시스템 상태 점검, 정기적인 보고서 생성 또는 사용자 활동에 의해 트리거되는 자동화된 프로세스 등 예약된 작업은 필수적인 역할을 합니다. 이는 비즈니스 로직의 연속성과 시스템의 자체 유지 관리 기능을 보장합니다.
기존 개발 모델에서 예약된 작업을 구현하려면 운영 체제의 예약된 작업(예: Linux의 crontab)에 의존하거나 복잡한 비즈니스 로직을 작성해야 하는 경우가 많습니다. 이러한 방법에는 많은 불편함이 있습니다.
널리 사용되는 Java 프레임워크인 Spring Boot는 예약된 작업을 구현하는 보다 우아하고 통합된 방법을 제공합니다. 구성을 단순화하고 풍부한 API를 제공하므로 개발자는 예약된 작업 기능을 애플리케이션에 신속하게 통합할 수 있습니다.
스프링 부트 합격@EnableScheduling
그리고@Scheduled
주석을 사용하면 Spring 애플리케이션에서 예약된 작업을 작성하고 구성하는 것이 매우 쉬워집니다. 또한 Spring Boot는 Spring Task Scheduler와의 통합도 제공하여 보다 고급 예약 작업 요구 사항을 지원합니다.
Spring Boot는 Pivotal 팀(현재 VMware의 일부)에 의해 개발되었으며 Spring 프레임워크를 기반으로 하는 모듈식의 신속한 개발 및 배포 프레임워크입니다. 일련의 기본 구성을 제공하여 Spring 애플리케이션의 초기 설정 및 개발 프로세스를 단순화하고 개발자의 구성 작업을 줄이는 것을 목표로 합니다.
Spring Boot 애플리케이션은 다음을 통해 시작됩니다.SpringApplication.run()
메소드가 구현되면 Spring 애플리케이션 컨텍스트가 자동으로 생성 및 구성됩니다. Spring Boot는 또한 애플리케이션을 모니터링하고 관리하기 위한 명령줄 인터페이스(CLI)와 Actuator 엔드포인트를 제공합니다.
스프링 부트 합격spring-boot-starter-parent
종속성 관리를 제공하고 Maven 및 Gradle 프로젝트 구성을 단순화합니다. 버전 번호와 종속성 범위를 미리 정의하여 종속성 충돌과 버전 제어를 더 쉽게 관리할 수 있습니다.
Spring Boot에는 다음과 같은 특정 기능을 구축하는 데 필요한 종속성을 포함하는 수많은 플러그인과 "스타터"를 제공하는 활성 오픈 소스 커뮤니티가 있습니다.spring-boot-starter-web
RESTful 애플리케이션 구축용.
다음은 간단한 Spring Boot 애플리케이션을 생성하는 단계와 해당 샘플 코드입니다.
spring-boot-starter-web
。import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class MyApp {
public static void main(String[] args) {
SpringApplication.run(MyApp.class, args);
}
}
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class MyController {
@GetMapping("/")
public String home() {
return "Hello, Spring Boot!";
}
}
java -jar
명령이 실행됩니다.Spring Boot는 Spring Framework를 대체하는 것이 아니라 Spring Framework 기반의 신속한 개발 방법입니다. 이는 Spring Framework의 모든 기능과 유연성을 유지하면서 Spring 애플리케이션을 시작하는 빠른 방법을 제공합니다.
Spring Boot는 최신 Java 개발을 위해 설계된 프레임워크로, 구성을 단순화하고 일련의 기본 기능을 제공하므로 개발자는 인프라 구축이 아닌 비즈니스 로직 구현에 집중할 수 있습니다. 다음 장에서는 예약된 작업에서 Spring Boot를 적용하는 방법을 자세히 살펴보고 해당 기능을 사용하여 효율적이고 안정적인 자동화 작업을 구축하는 방법을 보여줍니다.
예약된 작업은 미리 결정된 시간에 자동으로 실행되는 코드 또는 프로그램입니다. 일회성 또는 주기적일 수 있으며 데이터 백업, 알림 전송, 예약된 검사 수행 등과 같은 자동화된 작업을 수행하는 데 사용됩니다.
예약된 작업은 시스템을 계속 가동하고 실행하며 비즈니스 프로세스를 자동화하는 데 중요합니다. 수동 개입을 줄이고 효율성을 높이며 작업의 적시성과 정확성을 보장할 수 있습니다.
java.util.Timer
。@Scheduled
。java.util.Timer
예약된 작업 구현다음은 Java 표준 라이브러리를 사용하는 예입니다.Timer
클래스로 구현된 간단한 예약 작업의 예:
import java.util.Timer;
import java.util.TimerTask;
public class SimpleTimerTask {
public static void main(String[] args) {
TimerTask task = new TimerTask() {
@Override
public void run() {
System.out.println("执行定时任务:" System.currentTimeMillis());
}
};
Timer timer = new Timer();
long delay = 0;
long intervalPeriod = 1000; // 间隔1秒执行一次
timer.scheduleAtFixedRate(task, delay, intervalPeriod);
}
}
Cron 표현식은 예약된 작업의 실행 시간을 구성하는 강력한 방법입니다. 다음은 매일 오전 1시에 작업을 실행하는 cron 표현식의 예입니다.
0 0 1 * * ?
스프링 부트 합격@Scheduled
주석은 예약된 작업의 구성 및 구현을 단순화합니다.여기 용도가 있습니다@Scheduled
주석이 달린 Spring Boot 예약 작업 예:
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
@Component
public class ScheduledTasks {
@Scheduled(fixedRate = 5000) // 每5秒执行一次
public void reportCurrentTime() {
System.out.println("当前时间:" System.currentTimeMillis());
}
@Scheduled(cron = "0 0 1 * * ?") // 每天凌晨1点执行
public void scheduleTask() {
System.out.println("执行定时任务:" System.currentTimeMillis());
}
}
@Scheduled
주석@Scheduled
예약된 작업의 구현을 단순화하기 위해 Spring에서 제공하는 주석입니다. 간단한 주석 구성을 통해 주기적으로 실행되는 메서드를 생성할 수 있습니다.
@Scheduled
주석 구성fixedRate
: 두 작업 실행 사이의 고정 시간 간격(밀리초)을 지정합니다.fixedDelay
: 마지막 작업 실행 종료와 다음 작업 시작 사이의 고정 시간 간격을 지정합니다.initialDelay
: 작업이 처음 실행되기까지의 지연 시간을 지정합니다.cron
: cron 표현식을 사용하여 작업 실행 일정을 지정합니다.fixedRate
다음 예에서는 5초마다 실행되는 메서드를 보여줍니다.
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
@Component
public class FixedRateTask {
@Scheduled(fixedRate = 5000)
public void taskWithFixedRate() {
System.out.println("任务执行:" LocalDateTime.now());
}
}
fixedDelay
다음 예에서는 이전 작업 실행이 완료된 후 1초 후에 실행되는 메서드를 보여줍니다.
@Scheduled(fixedDelay = 1000)
public void taskWithFixedDelay() {
System.out.println("任务执行:" LocalDateTime.now());
}
initialDelay
다음 예에서는 애플리케이션이 시작된 후 처음 10초 동안 실행되고 그 다음에는 5초마다 실행되는 메서드를 보여줍니다.
@Scheduled(initialDelay = 10000, fixedRate = 5000)
public void taskWithInitialDelay() {
System.out.println("任务执行:" LocalDateTime.now());
}
Cron 표현식은 보다 복잡한 시간 설정을 제공하므로 특정 실행 시간을 지정할 수 있습니다. 다음 예에서는 매일 오전 1시에 실행되는 메서드를 보여줍니다.
@Scheduled(cron = "0 0 1 * * ?")
public void taskWithCronExpression() {
System.out.println("任务执行:" LocalDateTime.now());
}
예약된 작업에서 예외가 발생할 수 있습니다. Spring은 다음을 제공합니다.@Async
작업을 비동기적으로 수행하고 사용하기 위한 주석@ExceptionHandler
예외를 처리합니다.
@Async
@Scheduled(cron = "0 0/30 * * * ?")
public void taskWithExceptionHandling() {
if (Math.random()