在 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());
}
}
在實際應用中,可以根據具體需求選擇適合的方式。