[스프링] 프로파일별로 다른 데이터 유효성 검사 설정

스프링 애플리케이션을 개발할 때, 여러 환경에서 실행될 수 있도록 프로파일을 관리하는 것은 중요합니다. 데이터 유효성 검사 역시 애플리케이션의 다양한 프로파일에 따라 설정을 다르게 해야 할 때가 있습니다. 이 블로그 포스트에서는 스프링 프로파일을 활용하여 프로파일에 따라 다른 데이터 유효성 검사 설정을 하는 방법에 대해 알아보겠습니다.

프로파일별 데이터 유효성 검사 설정

프로파일 정의하기

먼저, 여러 환경에 따라 다르게 설정할 데이터 유효성 검사를 위한 프로파일을 정의해야 합니다. 예를 들어, 개발 환경과 프로덕션 환경에 따라 데이터 유효성 검사를 다르게 설정할 필요가 있을 수 있습니다.

@Target({ElementType.TYPE, ElementType.METHOD, ElementType.FIELD, ElementType.CONSTRUCTOR, ElementType.PARAMETER, ElementType.TYPE_PARAMETER, ElementType.ANNOTATION_TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Profile("dev")
public @interface DevProfile {}

위의 예시에서 DevProfile 어노테이션은 “dev” 프로파일에서 사용될 데이터 유효성 검사 설정을 의미합니다.

프로파일에 따른 설정 적용하기

유효성 검사를 적용할 클래스나 필드에 해당 프로파일을 적용합니다.

public class User {

    @NotBlank
    private String name;

    @NotNull
    private Integer age;

    @Email
    @DevProfile
    private String email;

}

위의 예시에서 @DevProfile 어노테이션이 붙은 email 필드는 “dev” 프로파일에서의 설정을 따르게 됩니다.

프로파일별 설정 적용 테스트하기

@Service
@Profile("dev")
public class DevUserService implements UserService {

    @Override
    public void saveUser(User user) {
        // dev profile specific implementation
    }
}

위의 예시에서 DevUserService는 “dev” 프로파일에 해당되는 서비스로, 해당 프로파일을 활성화할 경우 사용됩니다.

마치며

이렇게 스프링 프로파일을 활용하여 프로파일에 따라 다른 데이터 유효성 검사 설정을 하는 방법에 대해 알아보았습니다. 개발 환경과 프로덕션 환경 등 여러 환경에서 애플리케이션이 실행될 때 유용하게 사용될 수 있는 기능입니다.

참고: Spring Framework Documentation