import org.springframework.core.convert.converter.Converter;
import org.springframework.http.converter.HttpMessageConverter;
import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.context.annotation.Bean;
@RestController
public class EnumController {
// 假设有一个枚举类型
public enum Color {
RED, GREEN, BLUE
}
// 枚举转换器
@Bean
public Converter<String, Color> colorConverter() {
return new Converter<String, Color>() {
@Override
public Color convert(String source) {
return Color.valueOf(source.toUpperCase());
}
};
}
// 设置消息转换器
@Bean
public HttpMessageConverter<Object> messageConverter() {
return new MappingJackson2HttpMessageConverter();
}
// 接收枚举类型入参的接口
@GetMapping("/color")
public Color getColor(@RequestParam("color") Color color) {
return color;
}
}
这段代码定义了一个枚举类型Color
和一个转换器colorConverter
,它将字符串转换为Color
枚举。同时,它展示了如何在Spring Boot应用中注册这个转换器,以及如何在控制器中接收和返回枚举类型的参数。这有助于理解Spring框架中自定义类型转换的应用。