Hello

[Spring] RequestParam Enum으로 매핑 본문

spring

[Spring] RequestParam Enum으로 매핑

nari0_0 2024. 4. 18. 19:04
728x90

웹 요청을 할 때 요청 매개변수를 enum으로 받아야할 경우 기존에 String을 넘기면 enum을 매핑하는 코드를 작성하게 되어있었는데 매개변수에서 enum을 받을 수 있도록 수정한 내용 정리

 

매개변수를 enum으로 매핑하는 방법

1 spring core에 StringToEnumConverterFactory 클래스가 존재합니다.

Enum.valueOf 메서드를 사용해 변환합니다.

따라서, enum.name()을 넘기면 spring에서 알아서 변환해줍니다.

ex)

 

2. Custom Converter 만들어서 사용

valueOf를 사용하지 않고 매핑이 필요할 경우 사용하면 된다.

만든 Costom Converter 사용하려면 이를 Spring에 등록 해야 합니다.

@Configuration
public class WebConfig implements WebMvcConfigurer {

    @Override
    public void addFormatters(org.springframework.format.FormatterRegistry registry) {
        registry.addConverter(new UserTypeEnumConvert());
    }
}    
    
public class UserTypeEnumConvert implements Converter<String, UserType> {
        @Override
        public UserType convert(String s) {
            return UserType.valueOfCode(s);
    }
}

 

참고 : 

https://www.baeldung.com/spring-enum-request-param

728x90