在 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());
}
}
在实际应用中,可以根据具体需求选择适合的方式。