<返回更多

springboot 怎么实现枚举类型传递

2023-03-21  今日头条  理工男二号
加入收藏

在 Spring Boot 中,我们可以使用多种方式来实现枚举类型传递,以下是几个常规的方法:

1 @RequestParam 和 @PathVariable 注解:可以将枚举类型作为方法的参数,然后使用 @RequestParam 或 @PathVariable 注解来将请求参数或路径变量映射到该参数。例如:

@GetMApping("/example")
public ResponseEntity<ExampleResponse> exampleApi(
    @RequestParam ExampleEnum exampleEnum,
    @PathVariable ExampleEnum exampleEnum) {
    // ...
}

2 @JsonCreator 注解:可以在枚举类型中定义一个带有 @JsonCreator 注解的静态工厂方法,用于将请求参数转换为枚举类型。例如:

public enum ExampleEnum {
    EXAMPLE1("example1"),
    EXAMPLE2("example2");

    private final String value;

    ExampleEnum(String value) {
        this.value = value;
    }

    @JsonCreator
    public static ExampleEnum fromValue(String value) {
        for (ExampleEnum e : ExampleEnum.values()) {
            if (e.value.equals(value)) {
                return e;
            }
        }
        throw new IllegalArgumentException("Invalid example value: " + value);
    }
}

3 Spring Converter 接口:可以实现 Spring 的 Converter 接口,将请求参数转换为枚举类型。例如:

public class ExampleEnumConverter implements Converter<String, ExampleEnum> {
    @Override
    public ExampleEnum convert(String source) {
        return ExampleEnum.valueOf(source.toUpperCase());
    }
}

然后,在配置类中注册这个 Converter:

@Configuration
public class WebConfig implements WebMvcConfigurer {
    @Override
    public void addFormatters(FormatterRegistry registry) {
        registry.addConverter(new ExampleEnumConverter());
    }
}

在实际应用中,可以根据具体需求选择适合的方式。

声明:本站部分内容来自互联网,如有版权侵犯或其他问题请与我们联系,我们将立即删除或处理。
▍相关推荐
更多资讯 >>>