欢迎访问昆山宝鼎软件有限公司网站! 设为首页 | 网站地图 | XML | RSS订阅 | 宝鼎邮箱 | 宝鼎售后问题提交 | 后台管理


新闻资讯

MENU

软件开发知识

首先了解一下Converter接口 Spring中Converter接口如 次  来源:宝鼎软件 时间:2018-02-26

原文出处: 乞力马扎罗的雪雪 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中。,劳务派遣管理系统