Spring Boot 자습서 작업 일정

7481 단어 자바spring-boot
Spring boot의 공식 튜토리얼( 작업 일정 )을 참고로, 태스크를 정기 실행하는 프로그램을 작성했습니다.

환경



Apache Maven 3.6.3
OS: macOS Mojave 버전 10.14.6
텍스트 편집기: VSCode
Java: 11.0.2

만들기



먼저 Spring Initializr 을 열고 다음 내용으로 기초를 만듭니다.



완성된 zip 파일을 압축 해제하고 편집기에서 엽니다.

pom.xml에 다음 종속성을 추가합니다.
<dependency>
  <groupId>org.awaitility</groupId>
  <artifactId>awaitility</artifactId>
  <version>3.1.2</version>
  <scope>test</scope>
</dependency>

Awaitility는 비동기 시스템 테스트를 위한 간단한 도메인 특정 언어(DSL)를 제공하는 라이브러리입니다. ( Introduction to Awaitility 부터)

src/main/java/com/example/schedulingtasks 아래에 ScheduledTasks.java 파일을 작성하십시오.

내용은 다음과 같습니다.

ScheduledTasks.java
package com.example.schedulingtasks;

import java.text.SimpleDateFormat;
import java.util.Date;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;

@Component
public class ScheduledTasks {

    private static final Logger log = LoggerFactory.getLogger(ScheduledTasks.class);

    private static final SimpleDateFormat dateFormat = new SimpleDateFormat("HH:mm:ss");

    @Scheduled(fixedRate = 5000)
    public void reportCurrentTime() {
        log.info("The time is now {}", dateFormat.format(new Date()));
    }
}

fixedRate는 각 호출의 시작 시간부터 측정된 메소드 호출 사이의 간격을 지정합니다. 그 외에도, fixedDeley와 같은 태스크의 완료로부터 호출의 간격을 지정하는 등의 옵션이 있습니다.

@Scheduled
작업을 정기적으로 실행합니다. 옵션을 다양하게 선택할 수 있습니다(아래 표).
주기적으로 실행할 작업에 대해 Scheduled 주석으로 실행 주기를 지정합니다.
이 어노테이션을 지정할 수 있는 것은 인수를 취하지 않는 메소드 뿐입니다. (컴파일 에러는 되지 않습니다만 런타임시 예외가 발생합니다.)

이번에는 fixedRate로 5초마다 태스크를 실행하기로 하겠습니다.


필드
description


fixedDelay
메소드의 마지막 실행 완료 시간으로부터 몇 밀리 세컨드 후에 실행할까.

fixedRate
메서드의 마지막 실행 시작 시간부터 몇 밀리초 후에 실행할 것인가?

initialDelay
메소드의 최초 실행시의 대기 시간.

cron
cron을 작성하여 일정을 설정합니다. zone을 사용하여 시간대 지정도 가능.


(cron="・・・")를 사용하면 보다 고급 설정도 할 수 있습니다.

Logger와 LoggerFactory는 콘솔에 결과를 출력하기위한 것입니다.
LoggerFactory.getLogger() 의 인수에 클래스를 지정하면 로그를 표시할 수 있습니다.

그런 다음 src/main/java/com/example/schedulingtasks/아래에 자동으로 만들어진 SchedulingTasksApplication.java 파일에 코드를 추가합니다.

내용은 다음과 같습니다.

SchedulingTasksApplication.java
package com.example.schedulingtasks;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.scheduling.annotation.EnableScheduling;

@SpringBootApplication
@EnableScheduling
public class SchedulingTasksApplication {

    public static void main(String[] args) {
        SpringApplication.run(SchedulingTasksApplication.class);
    }
}

@SpringBootApplication
이것 1개로 3분의 어노테이션의 기능을 해 주는 편리한 어노테이션입니다. 다음 세 가지 주석이 포함되어 있습니다.

@Configuration
컨텍스트에 추가 Bean을 등록하거나 추가 구성 클래스를 가져올 수 있습니다.

@Bean
@Bean을 기술한 메소드로 인스턴스화한 클래스를 돌려주기 위한 것입니다.

@EnableAutoConfiguration
Spring Boot의 자동 구성 메커니즘을 활성화합니다.

@ComponentScan
패키지 내의 다른 컴퍼넌트나 설정등을 찾아, 컨트롤러를 찾아내도록 Spring에 지시합니다.

@EnableScheduling
일정을 사용합니다.

실행하다



이상으로 코드는 완성되었습니다.
바로 다음 명령으로 실행해 보겠습니다.
./mvnw spring-boot:run

5초마다 작업이 실행 중입니다.


종속성도 특별히 추가하지 않고도 쉽게 만들 수있었습니다!

좋은 웹페이지 즐겨찾기