package com.star.msgconverter;
import java.io.IOException;
import java.lang.reflect.Type;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.core.ResolvableType;
import org.springframework.http.HttpInputMessage;
import org.springframework.http.HttpOutputMessage;
import org.springframework.http.converter.HttpMessageNotReadableException;
import org.springframework.http.converter.HttpMessageNotWritableException;
import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter;
import org.springframework.util.StreamUtils;
import org.springframework.util.TypeUtils;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.exc.InvalidFormatException;
import com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException;
import com.fasterxml.jackson.databind.node.ObjectNode;
import com.star.model.User;
import com.star.output.OutputDto;
public class MessageConverter<T> extends MappingJackson2HttpMessageConverter {
private static final Logger logger = LoggerFactory.getLogger(MessageConverter.class);
private ObjectMapper jsonMapper = new ObjectMapper();
@Override
public Object read(Type type, Class<?> contextClass, HttpInputMessage inputMessage)
throws IOException, HttpMessageNotReadableException {
Class<?> targetClass = (type instanceof Class<?> ? (Class<?>) type : null);
if (targetClass == null) {
//获取type对应的可转换类型
ResolvableType resolvableType = ResolvableType.forType(type);
//Type对象转换为Class对象
targetClass = resolvableType.resolve();
}
logger.info("参数type:" + type.toString());
logger.info("参数contextClass:" + contextClass.toString());
logger.info("参数inputMessage:" + inputMessage.toString());
return readInternal(targetClass, inputMessage);
}
@Override
protected Object readInternal(Class<? extends Object> classzz, HttpInputMessage inputMessage)
throws IOException, HttpMessageNotWritableException {
if (TypeUtils.isAssignable(User.class, classzz) || TypeUtils.isAssignable(Map.class, classzz)) {
logger.info("自定义报文解析{}", classzz);
byte[] b = StreamUtils.copyToByteArray(inputMessage.getBody());
JsonNode master = jsonMapper.readTree(b);
JsonNode request = master.get("REQUEST");
if (request == null) {
logger.info("入参参数中缺少REQUEST节点,无法解析,请核对!");
}
else {
JsonNode data = request.get("REQUESTDATA");
JsonNode desc = request.get("REQUESTDESC");
if (data == null) {
logger.info("入参参数中缺少REQUESTDATA子节点,无法解析,请核对!");
}
else if(desc==null) {
logger.info("入参参数中缺少REQUESTDESC节点,无法解析,请核对!");
}
else {
try {
JSONObject jsonObject =JSONObject.parseObject(data.toString());
User user = jsonObject.toJavaObject(User.class);
if(user.getId()==null||user.getName()==null||user.getPassword()==null||user.getBirth()==null||user.getPhone()==null||user.getDepartment()==null) {
throw new Exception("请求参数数据格式有误!");
}else {
logger.info("------入参报文------");
logger.info(JSON.toJSONString(jsonMapper.treeToValue(data, classzz)));
return jsonMapper.treeToValue(data, classzz);
}
} catch (com.fasterxml.jackson.databind.exc.InvalidFormatException e) {
logger.info("请求参数格式错误");
} catch (UnrecognizedPropertyException e) {
logger.info("请求中包含未能识别的业务参数名", e.getMessage());
} catch (JsonProcessingException e) {
logger.info("错误OpenAPI请求!");
} catch (Exception e) {
logger.info("请求参数格式有误!");
}
}
}
return null;
} else {
logger.info("进入默认报文解析{}", classzz);
return super.readInternal(classzz, inputMessage);
}
}
@Override
protected void writeInternal(Object object, Type type, HttpOutputMessage outputMessage)
throws IOException, HttpMessageNotWritableException {
if (TypeUtils.isAssignable(OutputDto.class, object.getClass())) {
OutputDto o = (OutputDto) object;
String str = JSON.toJSONString(o);
JSONObject json = JSONObject.parseObject(str);
Map<String,Object> returnMap = new HashMap<String,Object>();
Map<String,Object> map = new HashMap<String,Object>();
SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
map.put("RETURNDATA", o);
map.put("RETURNCODE", "SUCCESS");
map.put("RETURNDESC", type);
map.put("RETURNTIME",sf.format(new Date()));
returnMap.put("RESPONSE", map);
logger.info("------------------出参报文---------------");
logger.info(returnMap.toString());
super.writeInternal(returnMap, type, outputMessage);
} else {
super.writeInternal(object, type, outputMessage);
}
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
基于SpringBoot、Mybatis的redis数据缓存
共120个文件
xml:76个
class:14个
java:13个
4星 · 超过85%的资源 需积分: 50 59 下载量 108 浏览量
2017-11-02
15:13:46
上传
评论 4
收藏 115KB RAR 举报
温馨提示
基于SpringBoot、Redis、Mybatis的数据缓存,实现redis缓存mysql数据库的数据,并添加ssl证书,实现https访问!
资源推荐
资源详情
资源评论
收起资源包目录
基于SpringBoot、Mybatis的redis数据缓存 (120个子文件)
MessageConverter.class 7KB
CacheConfig.class 5KB
UserController.class 3KB
RedisUtilImpl.class 2KB
User.class 2KB
UserService.class 2KB
RedisController.class 2KB
CacheConfig$1.class 1KB
AppConfig.class 1KB
SpringbootApplicationTests.class 1KB
OutputDto.class 1KB
SpringbootApplication.class 858B
RedisUtil.class 418B
UserMapper.class 342B
.classpath 1KB
mvnw.cmd 5KB
.gitignore 249B
springboot.iml 8KB
maven-wrapper.jar 46KB
MessageConverter.java 5KB
CacheConfig.java 4KB
UserController.java 2KB
User.java 1KB
UserService.java 1KB
AppConfig.java 1009B
SpringbootApplicationTests.java 976B
RedisUtilImpl.java 908B
RedisController.java 902B
OutputDto.java 611B
SpringbootApplication.java 544B
UserMapper.java 501B
RedisUtil.java 272B
.keystore 2KB
MANIFEST.MF 338B
mvnw 6KB
org.eclipse.jdt.core.prefs 243B
org.eclipse.core.resources.prefs 155B
org.eclipse.m2e.core.prefs 97B
.project 1KB
application.properties 1KB
application.properties 1KB
pom.properties 235B
maven-wrapper.properties 110B
.springBeans 473B
workspace.xml 48KB
uiDesigner.xml 9KB
applicationContext.xml 7KB
applicationContext.xml 7KB
pom.xml 4KB
pom.xml 3KB
Maven__org_springframework_boot_spring_boot_test_autoconfigure_1_5_7_RELEASE.xml 793B
Maven__org_springframework_boot_spring_boot_starter_data_redis_1_5_7_RELEASE.xml 793B
Maven__org_springframework_boot_spring_boot_starter_logging_1_5_7_RELEASE.xml 772B
Maven__org_springframework_boot_spring_boot_starter_tomcat_1_5_7_RELEASE.xml 765B
Maven__org_springframework_boot_spring_boot_autoconfigure_1_5_7_RELEASE.xml 758B
Maven__org_springframework_boot_spring_boot_starter_test_1_5_7_RELEASE.xml 751B
Maven__org_springframework_boot_spring_boot_starter_web_1_5_7_RELEASE.xml 744B
Maven__com_vaadin_external_google_android_json_0_0_20131108_vaadin1.xml 724B
Maven__org_springframework_spring_context_support_4_3_11_RELEASE.xml 724B
Maven__org_springframework_data_spring_data_commons_1_13_7_RELEASE.xml 723B
Maven__org_springframework_data_spring_data_keyvalue_1_2_7_RELEASE.xml 723B
Maven__org_springframework_boot_spring_boot_starter_1_5_7_RELEASE.xml 716B
Maven__org_springframework_data_spring_data_redis_1_8_7_RELEASE.xml 702B
Maven__org_springframework_boot_spring_boot_test_1_5_7_RELEASE.xml 695B
Maven__org_springframework_spring_expression_4_3_11_RELEASE.xml 689B
Maven__org_apache_tomcat_embed_tomcat_embed_websocket_8_5_20.xml 684B
Maven__org_springframework_spring_context_4_3_11_RELEASE.xml 668B
Maven__com_fasterxml_jackson_core_jackson_annotations_2_8_0.xml 668B
Maven__org_springframework_spring_webmvc_4_3_11_RELEASE.xml 661B
Maven__org_springframework_boot_spring_boot_1_5_7_RELEASE.xml 660B
Maven__org_hibernate_hibernate_validator_5_3_5_Final.xml 658B
Maven__com_fasterxml_jackson_core_jackson_databind_2_8_10.xml 654B
Maven__org_springframework_spring_beans_4_3_11_RELEASE.xml 654B
Maven__org_apache_tomcat_embed_tomcat_embed_core_8_5_20.xml 649B
Maven__org_springframework_spring_jdbc_4_3_11_RELEASE.xml 647B
Maven__org_springframework_spring_core_4_3_11_RELEASE.xml 647B
Maven__org_springframework_spring_test_4_3_11_RELEASE.xml 647B
Maven__org_springframework_spring_oxm_4_3_11_RELEASE.xml 640B
Maven__org_springframework_spring_web_4_3_11_RELEASE.xml 640B
Maven__org_springframework_spring_aop_4_3_11_RELEASE.xml 640B
Maven__javax_validation_validation_api_1_1_0_Final.xml 635B
Maven__org_apache_tomcat_embed_tomcat_embed_el_8_5_20.xml 635B
Maven__org_springframework_spring_tx_4_3_11_RELEASE.xml 633B
Maven__org_jboss_logging_jboss_logging_3_3_1_Final.xml 632B
compiler.xml 632B
Maven__com_fasterxml_jackson_core_jackson_core_2_8_10.xml 626B
Maven__ch_qos_logback_logback_classic_1_1_11.xml 599B
Maven__org_apache_commons_commons_pool2_2_4_2.xml 594B
Maven__mysql_mysql_connector_java_5_1_6.xml 591B
Maven__org_slf4j_log4j_over_slf4j_1_7_25.xml 586B
Maven__ch_qos_logback_logback_core_1_1_11.xml 578B
Maven__org_hamcrest_hamcrest_library_1_3.xml 577B
Maven__org_mockito_mockito_core_1_10_19.xml 573B
Maven__org_mybatis_mybatis_spring_1_3_1.xml 573B
Maven__org_slf4j_jcl_over_slf4j_1_7_25.xml 572B
Maven__com_jayway_jsonpath_json_path_2_2_0.xml 570B
UserMapper.xml 568B
UserMapper.xml 568B
Maven__net_minidev_accessors_smart_1_1.xml 566B
Maven__org_skyscreamer_jsonassert_1_4_0.xml 561B
共 120 条
- 1
- 2
资源评论
- zx21335802020-08-22还行 还算是有些用 有些启发
- 自己的自己A2019-01-13挺好的,可以
- hxl2082018-10-30还不错,可以
Starbucks_star
- 粉丝: 14
- 资源: 19
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功