>Java >java지도 시간 >Springboot가 Scheduled를 통해 예약된 작업을 구현하는 방법

Springboot가 Scheduled를 통해 예약된 작업을 구현하는 방법

WBOY
WBOY앞으로
2023-05-16 18:10:141393검색

예약된 작업은 일반적으로 중대형 기업 수준 프로젝트에 존재합니다. 서버 및 데이터베이스에 대한 부담을 줄이기 위해 특정 비즈니스 로직이 일정 기간 내에 완료되는 경우가 많습니다. 더 일반적인 것은 금융 서비스 시스템의 푸시 콜백입니다. 일반적으로 결제 시스템 주문은 성공적인 콜백 반환 콘텐츠를 수신하지 못할 때 지속적으로 콜백합니다. 보고서 생성도 있습니다. 일반적으로 고객 방문 수가 너무 적을 때, 즉 이른 아침에 이 작업을 완료합니다. 이때 예약된 작업을 사용하여 논리를 완료할 수도 있습니다. SpringBoot에는 우리를 위한 예약된 작업이 내장되어 있습니다. 우리는 사용 타이밍을 활성화하기 위해 주석만 필요합니다.

개발 시 예약된 작업은 일반적인 기능입니다. 실제로는 스프링 부트에서 예약된 작업을 개발하는 것이 매우 간단합니다.

1. 기본 Maven 웨어하우스이므로 종속성 패키지 구성. 액세스할 수 없는 경우가 많으므로 여기에는 Alibaba Cloud의 Maven 창고 이미지가 사용됩니다.

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <groupId>com.example</groupId>
  <artifactId>demo</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <packaging>jar</packaging>

  <name>spring-boot-scheduled</name>
  <description>Demo project for Spring Boot</description>

  <!-- 阿里云maven仓库 -->
  <repositories>
    <repository>
      <id>public</id>
      <name>aliyun nexus</name>
      <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
      <releases>
        <enabled>true</enabled>
      </releases>
    </repository>
  </repositories>
  <pluginRepositories>
    <pluginRepository>
      <id>public</id>
      <name>aliyun nexus</name>
      <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
      <releases>
        <enabled>true</enabled>
      </releases>
      <snapshots>
        <enabled>false</enabled>
      </snapshots>
    </pluginRepository>
  </pluginRepositories>

  <parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>1.4.5.RELEASE</version>
    <relativePath /> <!-- lookup parent from repository -->
  </parent>

  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
    <java.version>1.8</java.version>
  </properties>

  <dependencies>
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-web</artifactId>
    </dependency>

    <dependency>
      <groupId>org.projectlombok</groupId>
      <artifactId>lombok</artifactId>
      <optional>true</optional>
    </dependency>
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-test</artifactId>
      <scope>test</scope>
    </dependency>
  </dependencies>

  <build>
    <plugins>
      <plugin>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-maven-plugin</artifactId>
      </plugin>
    </plugins>
  </build>
</project>

2. 맞춤형 작업 시나리오

예약된 작업 구현으로 고정 기간, 고정 기간 지연 간격, 설정 시점 실행 등의 시나리오를 제공합니다. 주석에는 @Scheduled 주석을 사용하십시오.

ExampleTimer.java

package com.example;
import java.text.SimpleDateFormat;
import java.util.Date;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
@Component
public class ExampleTimer {
	SimpleDateFormat dateFormat = new SimpleDateFormat("HH:mm:ss");
	@Scheduled(fixedRate = 10000)
	    public void timerRate() {
		System.out.println(dateFormat.format(new Date()));
	}
	//第一次延迟1秒执行,当执行完后2秒再执行
	@Scheduled(initialDelay = 1000, fixedDelay = 2000)
	    public void timerInit() {
		System.out.println("init : "+dateFormat.format(new Date()));
	}
	//每天20点16分50秒时执行
	@Scheduled(cron = "50 16 20 * * ?")
	    public void timerCron() {
		System.out.println("current time : "+ dateFormat.format(new Date()));
	}
}

3. 애플리케이션 시작

프로그램을 시작하려면 @EnableScheduling 주석을 추가해야 합니다.

SpringBootScheduledApplication.java

package com.example;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.scheduling.annotation.EnableScheduling;
@SpringBootApplication
@EnableScheduling
public class SpringBootScheduledApplication {
	public static void main(String[] args) {
		SpringApplication.run(SpringBootScheduledApplication.class, args);
	}
}

4 출력 결과.

위 내용은 Springboot가 Scheduled를 통해 예약된 작업을 구현하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 yisu.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제