[스프링] 프로파일에 따른 다른 스프링 인터셉터 설정

스프링 애플리케이션을 개발하다 보면 다양한 환경에서 동작해야 할 때가 있습니다. 예를 들어, 개발, 테스트, 운영 환경에서 각각 다른 로깅 수준이나 보안 인터셉터 설정을 적용할 수 있습니다. 이러한 경우 스프링 프로파일을 이용하여 각각의 환경에 적합한 설정을 쉽게 제어할 수 있습니다.

스프링 프로파일 설정

먼저, 프로파일에 따라 다른 설정을 적용하기 위해 프로파일을 정의해야 합니다. @Profile 어노테이션을 사용하여 각 프로파일에 적용할 빈을 지정할 수 있습니다.

@Configuration
@Profile("development")
public class DevelopmentConfig {
    // 개발 환경에 적용할 설정
}

@Configuration
@Profile("production")
public class ProductionConfig {
    // 운영 환경에 적용할 설정
}

프로파일별 인터셉터 설정

인터셉터를 프로파일에 따라 다르게 적용하려면 각 프로파일에 해당하는 설정 클래스를 작성해야 합니다. 아래는 프로파일에 따라 다른 보안 인터셉터를 적용하는 예제입니다.

@Configuration
@Profile("development")
public class DevelopmentInterceptorConfig extends WebMvcConfigurerAdapter {
    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        registry.addInterceptor(new DevelopmentSecurityInterceptor());
    }
}

@Configuration
@Profile("production")
public class ProductionInterceptorConfig extends WebMvcConfigurerAdapter {
    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        registry.addInterceptor(new ProductionSecurityInterceptor());
    }
}

위의 코드에서 DevelopmentInterceptorConfig 클래스는 development 프로파일에, ProductionInterceptorConfig 클래스는 production 프로파일에 해당하는 설정을 적용합니다.

프로파일 활성화

애플리케이션이 특정 프로파일로 동작하도록 하려면 다음과 같이 활성화할 수 있습니다.

spring.profiles.active=development
java -jar myapp.jar --spring.profiles.active=development

위의 설정을 통해 각각의 프로파일에 대해 다른 인터셉터 설정을 적용하여 스프링 애플리케이션을 쉽게 관리할 수 있습니다.

결론

프로파일을 이용하여 스프링 애플리케이션에 다양한 설정을 쉽게 적용할 수 있습니다. 다중 인터셉터 설정을 통해 각 프로파일에 따라 다른 동작을 구현할 수 있으며, 이를 통해 애플리케이션의 유연성과 확장성을 높일 수 있습니다.

관련 참고 자료: Spring Framework Documentation