[스프링] 프로파일마다 다른 스케줄링 설정

스프링 애플리케이션을 개발하다보면, 다양한 환경에서 동일한 애플리케이션을 실행해야할 때가 있습니다. 이때 스프링 프로파일을 사용하여 각각의 환경에 맞는 설정을 구성할 수 있습니다. 이번 포스트에서는 프로파일마다 다른 스케줄링 설정을 하는 방법에 대해 알아보겠습니다.

1. 프로파일을 정의하기

먼저, application.yml 파일에 각각의 프로파일을 정의합니다. 이때 spring.profiles.active 속성을 사용하여 활성화할 프로파일을 지정할 수 있습니다.

예를 들어, devprod 프로파일을 정의할 때:

spring:
  profiles:
    active: dev

2. 프로파일별 설정 구성하기

이제 각각의 프로파일에 해당하는 설정을 구성합니다. 예를 들어, SchedulerConfig 클래스를 생성하여 스케줄링을 설정하고, 각각의 프로파일에 맞게 설정을 오버라이딩합니다.

@Configuration
@Profile("dev")
public class DevSchedulerConfig {
    // dev 프로파일에 대한 스케줄링 설정
}

@Configuration
@Profile("prod")
public class ProdSchedulerConfig {
    // prod 프로파일에 대한 스케줄링 설정
}

3. 프로파일에 따른 빈 구성하기

마지막으로, 스케줄링 빈을 정의할 때 프로파일을 지정하여 각각의 환경에 맞는 빈을 설정할 수 있습니다.

@Bean
@Profile("dev")
public TaskScheduler devTaskScheduler() {
    // dev 프로파일에 대한 TaskScheduler 빈 설정
}

@Bean
@Profile("prod")
public TaskScheduler prodTaskScheduler() {
    // prod 프로파일에 대한 TaskScheduler 빈 설정
}

위와 같이 프로파일별로 다른 스케줄링 설정을 구성할 수 있습니다.

흔히 사용되는 프로파일 외에도 다른 방법으로도 스케줄링을 설정할 수 있습니다. 하지만, 스프링 프로파일을 활용하면 간단하게 다양한 환경에 맞춰 스케줄링 설정을 관리할 수 있습니다.