Spring Converter入门之字符串转化为枚举
来源:互联网 发布:淘宝买了汽枪配件警察 编辑:程序博客网 时间:2024/05/20 14:41
Converter是Spring3中引入的一项比较特殊的功能,其实就是一个转换器,可以把一种类型转换为另一种类型。尤其是在web项目中比较常见,可以对接口的入参做校验,把前端的入参的类型转换后为后端可以使用的类型。如常常用来做类型转换、字符串去空、日期格式化等。在Spring3之前进行类型转换都是使用PropertyEditor,使用PropertyEditor的setAsText()方法可以实现String转向特定的类型,但是它的最大的一个缺陷就是只支持String转为其他类型。
Spring中的三种类型转换接口分别为:
- Converter接口:使用最简单,但是不太灵活;
- ConverterFactory接口:使用较复杂,稍微灵活一点;
- GenericConverter接口:使用最复杂,也最灵活;
由于枚举类型在开发中很常见,而前端无法直接传入一个Java中的枚举类型。该篇博客将会使用Converter来把一个前端传入的String转化为枚举,以方便使用。
- 首先了解一下Converter接口
Spring中Converter接口如下:
package org.springframework.core.convert.converter;
public interface Converter<S, T> {
T convert(S var1);
}
即可以把S类型转化为T类型,并支持泛型。
- 首先建立一个简单的对象类Person
其中的一个字段性别GenderEnum使用了枚举。
public class Person {
private String name;
private GenderEnum type;
public Person() {
}
public Person(GenderEnum type, String name) {
this.type = type;
this.name = name;
}
public GenderEnum getType() {
return type;
}
public void setType(GenderEnum type) {
this.type = type;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public String toString() {
return "Person{" +
"type=" + type +
", name='" + name + '\'' +
'}';
}
}
- 需要转化的枚举类
两个字段分别为male、female。现在的需求是前端分别传入“male”、“female”,后台就能转换为枚举中的male,female.
public enum GenderEnum {
male("male"),
female("female");
private final String value;
GenderEnum(String v) {
this.value = v;
}
public String toString() {
return this.value;
}
public static GenderEnum get(int v) {
String str = String.valueOf(v);
return get(str);
}
public static GenderEnum get(String str) {
for (GenderEnum e : values()) {
if (e.toString().equals(str)) {
return e;
}
}
return null;
}
}
- Convert转换类
在这个类中实现了Converter接口,并重写convert方法。
final class StringToGenderEnumConverter implements Converter<String, GenderEnum> {
@Override
public GenderEnum convert(String source) {
String value = source.trim();
if ("".equals(value)) {
return null;
}
return GenderEnum.get(Integer.parseInt(source));
}
}
- spring-mvc.xml配置
在Spring配置文件中,配置conversionService。
<mvc:annotation-driven conversion-service="conversionService"/>
<bean id="conversionService" class="org.springframework.context.support.ConversionServiceFactoryBean"
<property name="converters"
<set>
<bean class="com.chenyufeng.springmvc.common.converter.StringToGenderEnumConverter"/>
</set>
</property>
</bean>
- Controller
在Controller接口中,对于枚举字段,前端可以直接传入String类型的“male”、“female”,Converter可以自动进行转换。
@Api(value = "converter", description = "自动转换", produces = MediaType.APPLICATION_JSON_VALUE)
@Controller
@RequestMapping("/converter")
public class ConverterController {
@Autowired
private ConverterService converterService;
@RequestMapping(value = "/savePerson", method = RequestMethod.GET)
@ResponseBody
public String savePerson(
@ApiParam(value = "type") @RequestParam GenderEnum type,
@ApiParam(value = "ID") @RequestParam String id) {
Person person = new Person(type, id);
return converterService.savePerson(person);
}
}
以上案例上传至:https://github.com/chenyufeng1991/StartSpringMVC_Modules中。
阅读全文
1 0
- Spring Converter入门之字符串转化为枚举
- Spring Converter入门之字符串转化为枚举
- 枚举转化为JSON字符串
- 把枚举转化为相应的字符串
- 将枚举类型转化为字符串
- 将字符串型转化为(Enum)枚举类型
- 字符串如何转化为对应的枚举值 C语言
- 枚举和字符串的转化
- 字符串转化为日期
- 字符串转化为int
- 整数转化为字符串
- 字符串转化为数值
- 字符串转化为整数
- 字符串转化为数字
- 字符串转化为数字
- 正数转化为字符串
- 字符串转化为正数
- 整型转化为字符串
- 五类Elasticsearch扩展性插件推荐
- C++ DFS求连通块
- 希尔排序 shell sort
- LibreOJ 6162 「美团 CodeM 初赛 Round A」身体训练
- MySQL索引背后的数据结构及算法原理
- Spring Converter入门之字符串转化为枚举
- spring cloud-zuul的Filter详解
- CLISP 之变量删除与重建的影响
- python:pandas(7),读写文本格式数据
- 单点登录
- 机器学习方法篇(14)------SVM公式推导
- 周中训练笔记11——线段树总结
- 51nod 1182 完美字符串(贪心)
- 苹果创始人———乔布斯