springboot接口接收枚举字符串自动转枚举示例
时间: 2023-11-10 18:13:00 浏览: 95
好的,假设我们有一个枚举类`ColorEnum`表示颜色:
```java
public enum ColorEnum {
RED("红色"),
GREEN("绿色"),
BLUE("蓝色");
private String description;
ColorEnum(String description) {
this.description = description;
}
public String getDescription() {
return description;
}
}
```
我们现在需要在Spring Boot的Controller中接收一个枚举类型的字符串参数,然后将其转换为相应的枚举类型。可以使用Spring Boot提供的`@RequestParam`注解和`org.springframework.core.convert.converter.Converter`接口来实现:
```java
@RestController
@RequestMapping("/colors")
public class ColorController {
@GetMapping
public String getColor(@RequestParam("color") ColorEnum color) {
return "你选择的颜色是:" + color.getDescription();
}
@Component
public static class ColorEnumConverter implements Converter<String, ColorEnum> {
@Override
public ColorEnum convert(String source) {
try {
return ColorEnum.valueOf(source.toUpperCase());
} catch (IllegalArgumentException e) {
throw new IllegalArgumentException("无效的颜色值:" + source);
}
}
}
}
```
在上面的例子中,我们定义了一个`ColorEnumConverter`类实现了`Converter`接口,并在其中实现了将字符串转换为枚举类型的逻辑。然后我们将它标记为`@Component`,以便让Spring Boot自动将它注册为一个转换器。在`getColor`方法中,我们直接将`@RequestParam`注解的参数类型设置为`ColorEnum`,Spring Boot会自动根据参数类型使用我们定义的转换器将字符串转换为枚举类型。
阅读全文