首页 > 解决方案 > spring 中的自定义参数转换器

问题描述

Spring中是否有任何自定义参数转换器。例如

@RequestMapping(value="/getEmployees/{"empName"}")
public void getEmployees(@PathVariable("empName") Employee employee)
{
}

从请求中获取的路径变量是 spring 类型。基于给定的 empName,它将分配给 Employee 对象。在 JAX-RS 中,我们可以使用 ParamConvertor 和 ParamConvertorProvider 进行转换。就像在 JAX-RS 中一样,我们有任何转换器吗?

标签: springrest

解决方案


是的,您可以在 Spring 中使用自定义参数转换器

1 创建一个实现spring Converter接口的转换器组件

@Component
public class StringToRightsModeConverter implements Converter<String, RightsMode> {

    @Override
    public RightsMode convert(String s) {
        try{
            return RightsMode.valueOf(s);
        } catch (Exception e) {
            return RightsMode.getByCode(s);
        }
    }
}

2 仅此而已。Spring 会自动将其用于 String -> RightsMode 类型转换

@GetMapping({"/periods"})
public List<Period> periods(
        @RequestParam(required = false) RightsMode rightsMode) {
 ................................................................
}

Spring 3 类型转换


推荐阅读