본문 바로가기

Web Dev/Java Spring

Java Spring 프레임워크 Controller에서 함수에 스케줄링 작업 하는 벙법 (10분에 한번씩 작동)

반응형

자바 컨트롤러에서 

사용하는 함수를 10분에 한번씩 서버가 작동하는 동안 자동으로 실행 되도록 하고 싶다면 

 

Java Spring 프레임워크에서 스케줄링 작업을 처리하기 위해 스케줄러를 사용할 수 있습니다.

가장 일반적으로 사용되는 스케줄러는 Spring의 @Scheduled 어노테이션을 사용한 스케줄링입니다.

이것을 이용하면 주기적으로 메소드를 실행할 수 있습니다.

이때 @Scheduled 어노테이션을 사용하려면 다음의 단계를 따르면 됩니다.

프로젝트에 Spring 스케줄링을 위한 의존성을 추가해야 합니다. Spring Boot를 사용한다면 이미 내장된 스케줄러가 포함되어 있습니다.

스케줄링할 메소드를 작성하고 @Scheduled 어노테이션을 사용하여 주기를 설정합니다.

예를 들어, 10분마다 실행되어야 하는 메소드를 스케줄링하려면 다음과 같이 코드를 작성할 수 있습니다:

import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Service;

@Service
public class YourService {
    @Scheduled(fixedRate = 600000) // 600,000 밀리초 = 10분
    public void yourScheduledMethod() {
        // 이 메소드는 10분마다 실행됩니다.
        // 여기에 10분마다 실행해야 하는 코드를 작성하세요.
    }
}

위의 코드에서 @Scheduled 어노테이션의 fixedRate 속성을 사용하여 10분마다 실행되도록 설정했습니다.

 fixedRate 값은 밀리초 단위로 지정하며, 위의 예제에서는 600,000 밀리초(10분)으로 설정되었습니다.

또한, 스케줄링을 사용하려면 스프링 설정 파일에서 스케줄링을 활성화하는 설정을 해야할 수 있습니다.

 Spring Boot를 사용한다면 일반적으로 이러한 설정은 자동으로 활성화됩니다.

이렇게 설정한 메소드는 애플리케이션이 실행되면 스케줄러에 의해 주기적으로 실행됩니다.

전자정부프레임워크에서 스케줄링 작업을 설정하려면 Spring 스케줄링과 유사한 방법을 사용할 수 있습니다. 

전자정부프레임워크는 Spring 기반으로 개발되었으므로, 

@Scheduled 어노테이션과 유사한 스케줄링 설정을 할 수 있습니다. 

다음은 전자정부프레임워크에서 스케줄링 작업을 설정하는 방법입니다:

스케줄링할 메소드를 작성합니다. 메소드는 주기적으로 실행하려는 작업을 포함해야 합니다.

스케줄링을 위해 XML 설정 파일에 <task:scheduled-tasks> 엘리먼트를 추가합니다. 여기에 스케줄링할 메소드와 주기를 설정할 수 있습니다.

예를 들어, 전자정부프레임워크에서 10분마다 실행되는 스케줄링 작업을 설정하려면 다음과 같이 XML 설정 파일을 수정할 수 있습니다:

<task:scheduler id="taskScheduler" pool-size="1" />

<task:scheduled-tasks scheduler="taskScheduler">
    <task:scheduled ref="yourBeanName" method="yourScheduledMethod" fixed-rate="600000" />
</task:scheduled-tasks>

위의 XML 구성에서:

<task:scheduler> 엘리먼트는 스케줄러를 정의합니다.<task:scheduled> 엘리먼트는 실제로 스케줄링된 작업을 정의합니다.


ref 속성은 스케줄링할 빈(bean)의 이름을 지정합니다.


method 속성은 실행할 메소드의 이름을 지정합니다.


fixed-rate 속성은 작업을 실행하는 간격을 지정하며, 이 경우 600,000 밀리초(10분)로 설정했습니다.

저는 해당 xml 파일 설정 코드를 사용하였습니다. 

반응형
<task:annotation-driven executor="taskExecutor" scheduler="taskScheduler" />
 <task:executor id="taskExecutor" pool-size="10" />
<task:scheduler id="taskScheduler" />

 


 <task:annotation-driven>을 사용하는 경우, 스케줄링 설정을 애노테이션과 Java 코드를 통해 할 수 있습니다. 

tenMinEVChargerApiDataToDB 메소드를 스케줄링하려면 @Scheduled 애노테이션을 사용하여 메소드를 스케줄링합니다. 

스케줄러 설정을 XML에서 정의하지 않아도 됩니다.

아래와 같이 메소드에 @Scheduled 애노테이션을 추가합니다:

import org.springframework.scheduling.annotation.Scheduled;

// ...

@Scheduled(fixedRate = 600000) // 10분(600,000밀리초)마다 실행
public void tenMinEVChargerApiDataToDB() {
    // 메소드 내부 코드
}

이제 메소드는 10분 간격으로 실행됩니다. <task:annotation-driven> 설정과 같이 사용할 필요가 없습니다.

기존 XML 설정 파일에서 <task:annotation-driven>와 task:executor, task:scheduler 등의 설정을 사용하지 않고, 애노테이션을 통한 스케줄링으로 변경했으므로, 해당 XML 설정 부분은 필요 없어집니다.

애노테이션 기반 스케줄링을 사용할 때, 메소드에 @Scheduled 애노테이션을 추가하고 실행 주기를 설정하여 스케줄링할 수 있습니다.

반응형