SpringBoot枚举传参
创建一个接口所有枚举继承
package com.gecko.charging.common;public interface BaseEnum {Integer getCode();
}
具体的枚举类型
package com.gecko.charging.partner.enums;import com.alibaba.fastjson.annotation.JSONType;
import com.gecko.charging.common.BaseEnum;
import com.gecko.charging.util.json.EnumDeserializer;
import com.gecko.charging.util.json.EnumSerializer;/*** 合作商类型*/
//@JSONType(serializer = EnumSerializer.class, deserializer = EnumDeserializer.class, serializeEnumAsJavaBean = true)
public enum PartnerType implements BaseEnum {agent(1),//代理商purchaser(2),//采购商operators(3),//运营商;private Integer code;PartnerType(Integer code) {this.code = code;}@Overridepublic Integer getCode() {return this.code;}
}
枚举转换器工程
package com.gecko.charging.common.stringtoenum.converter;import com.gecko.charging.common.BaseEnum;
import org.springframework.core.convert.converter.Converter;
import org.springframework.core.convert.converter.ConverterFactory;
import org.springframework.stereotype.Component;
import org.springframework.util.StringUtils;@Component
public class EnumConvertFactory implements ConverterFactory<String, BaseEnum> {@Overridepublic <T extends BaseEnum> Converter<String, T> getConverter(Class<T> targetType) {return new StringToIEum<>(targetType);}@SuppressWarnings("all")private static class StringToIEum<T extends BaseEnum> implements Converter<String, T> {private Class<T> targerType;public StringToIEum(Class<T> targerType) {this.targerType = targerType;}@Overridepublic T convert(String source) {if (StringUtils.isEmpty(source)) {return null;}return (T) EnumConvertFactory.getIEnum(this.targerType, source);}}public static <T extends BaseEnum> Object getIEnum(Class<T> targerType, String source) {for (T enumObj : targerType.getEnumConstants()) {if (source.equals(String.valueOf(enumObj.getCode()))) {return enumObj;}}return null;}
}
添加工厂到配置中
package com.gecko.charging.common.stringtoenum.config;import com.gecko.charging.common.stringtoenum.converter.EnumConvertFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Configuration;
import org.springframework.format.FormatterRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;@Configuration
public class WebConfig implements WebMvcConfigurer {@Autowiredprivate EnumConvertFactory enumConvertFactory;@Overridepublic void addFormatters(FormatterRegistry registry) {registry.addConverterFactory(enumConvertFactory);}}
接口中传指定code就可以转换成枚举了!
个人微信公众,经常更新一些实用的干货:
SpringBoot枚举传参相关推荐
- springboot前端传参date类型后台处理方式
springboot前端传参date类型后台处理方式 先说结论:建议大家直接使用@JsonFormat,原因如下: 1.针对json格式:在配置文件中加以下配置 spring.jackson.date ...
- delphi中的函数传参如何传枚举参数_我是这样使用SpringBoot(API传参)
spring boot 传参 spring boot 中的Controller或者RestController接收参数的方法是一样的.这章目标是对几种常用的传参都写个例子. 创建package: co ...
- Springboot url传参 @Getmapper
目录 1. @GetMapper注解传参数 2.传参名称可不可以不同呢? 3.可不可以不输参数名呢? 1. @GetMapper注解传参数 从url中解析得到传递的参数 ?表示要传参了 http:// ...
- 记:今晚解决枚举传参问题
1.使用fastjson @JsonCreater 没有解决 重写convert 没有解决 实现JsonDeserializer 没有解决
- shell 脚本启动 SpringBoot程序,用 curl 传参给 post、delete、update等请求的body
shell脚本启动SpringBoot #!/bin/sh ## java 此处是指定jdk启动 export JAVA_HOME=/usr/local/java/jdk1.8.0_181 # jre ...
- Springboot传参详解
作者简介 作者名:编程界明世隐 简介:CSDN博客专家,从事软件开发多年,精通Java.JavaScript,博主也是从零开始一步步把学习成长.深知学习和积累的重要性,喜欢跟广大ADC一起打野升级,欢 ...
- springboot 使用 @Scheduled注解定时任务, 方法传参解决办法
如题,springboot使用定时任务很简单,加个注解就行啦 注解的使用方法,1.启动类加上注解 @EnableScheduling //开启定时任务支持 2.方法上使用@Scheduled(cron ...
- delphi中的函数传参如何传枚举参数_shell脚本的函数介绍使用和工作常用案例。建议收藏...
#前言:今天我们来聊聊shell脚本中的函数知识,看一下函数的优势,执行过程和相关的使用案例. #简介 1.函数也具有别名类似的功能 2.函数是把程序里多次调用相同的代码部分定义成一份,然后给这份代码 ...
- SpringBoot(Thymeleaf)前端html页面直接的传参和判定
传参 <div th:replace="~{/commons/commons::sidebar(active='charts.html')}"></div> ...
最新文章
- Web项目使用nginx实现代理端口访问,看这篇就够了
- VTK:绘图之StackedPlot
- 自动生成存储过程的脚本
- nginx搭建静态服务器(127.0.0.1/localhost访问)
- 理解 OpenStack 高可用(HA) (6): MySQL HA
- Vue学习笔记(九) Vue CLI
- LuoguP1131 [ZJOI2007]时态同步
- Weblogic内存调整
- 在线假单词随机生成器
- bzoj 3383: [Usaco2004 Open]Cave Cows 4 洞穴里的牛之四(set+BFS)
- 用计算机考试有老师引导,河北省教师计算机考试评价题及答案
- 51nod 1106 质数检测
- 卷积神经网络参数说明
- linux grep 日期,linux 文本处理工具之一grep命令详解
- debug常规的基本使用
- MAML-CNN代码笔记
- 设置http代理解决qq音乐pc版无法播放问题
- html语言标题怎么居中,HTML – 如何在标题中垂直居中文本?
- “3G域名”遭恶炒 用友移动代理被指画饼圈钱
- 华为HG8204 光纤猫的路由设置
热门文章
- 在线作图|2分钟绘制一张箱线图
- Nature子刊:三代测序重构菌株水平宏基因组序列的计算框架iGDA
- R语言绘制带聚类树的堆叠柱形图
- Science:中科院植物所马克平组揭示土壤真菌与树木密度的关系
- pandas基于dataframe特定数据列的指定阈值将原dataframe分割成两个dataframe(split dataframe based on column value threshold
- R语言ggplot2可视化、在可视化区域中自定义添加多个大小不同矩形阴影区域、自定义配置大小不同矩形阴影区域的颜色(Adding multiple shadows/rectangles)
- R语言构建xgboost模型:使用xgb.DMatrix保存、加载数据集、使用getinfo函数抽取xgb.DMatrix结构中的数据
- R语言聚类分析之基于划分的聚类KMeans实战:基于葡萄酒数据
- R语言数据结构之数组
- Java程序设计-基础知识