ソースを参照

1.修改fastjson适配问题
2.由于mysql-connecter升级,连接字符串部分的更改

wanghs 2 年 前
コミット
758c4e6776

+ 69 - 0
warning-web/src/main/java/com/gyee/wisdom/alarm/sharding/config/MyJsonConfig.bak

@@ -0,0 +1,69 @@
+package com.gyee.wisdom.alarm.sharding.config;
+
+import com.alibaba.fastjson.serializer.NameFilter;
+import com.alibaba.fastjson.serializer.SerializeConfig;
+import com.alibaba.fastjson.serializer.SerializerFeature;
+import com.alibaba.fastjson.support.config.FastJsonConfig;
+import com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter;
+import org.springdoc.webmvc.ui.SwaggerWelcomeWebMvc;
+import org.springframework.boot.autoconfigure.http.HttpMessageConverters;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.http.MediaType;
+import org.springframework.http.converter.HttpMessageConverter;
+import org.springframework.http.converter.StringHttpMessageConverter;
+import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
+import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
+
+import java.nio.charset.Charset;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Optional;
+import java.util.TimeZone;
+
+/**
+ * @description:
+ * @auther: Wanghs
+ * @date: 2022-04-06
+ */
+@Configuration
+public class MyJsonConfig {
+    //springboot 默认通过jackson来转化json,@JSONField(....)是fastjson的注解,因此要添加如下配置
+    //Long类型在前端js中会丢失精度
+    @Bean
+    public HttpMessageConverters fastJsonHttpMessageConverters() {
+        TimeZone.setDefault(TimeZone.getTimeZone("GMT+8"));
+        FastJsonHttpMessageConverter fastConverter = new FastJsonHttpMessageConverter();
+        FastJsonConfig fastJsonConfig = new FastJsonConfig();
+        SerializeConfig serializeConfig = fastJsonConfig.getSerializeConfig();
+        //serializeConfig.put(String.class,MyStringSerializer.instance);
+        fastJsonConfig.setSerializeConfig(serializeConfig);
+
+        fastJsonConfig.setDateFormat("yyyy-MM-dd HH:mm:ss");    //自定义时间格式
+        fastJsonConfig.setSerializerFeatures(
+                SerializerFeature.DisableCircularReferenceDetect
+                ,SerializerFeature.WriteMapNullValue
+                ,SerializerFeature.WriteDateUseDateFormat
+        );  //关闭循环引用,正常转换null值,格式化
+
+        fastConverter.setFastJsonConfig(fastJsonConfig);
+        List<MediaType> fastMediaTypes = new ArrayList<>();
+        fastMediaTypes.add(MediaType.APPLICATION_JSON_UTF8);
+        fastConverter.setSupportedMediaTypes(fastMediaTypes);
+        HttpMessageConverter<?> converter = fastConverter;
+        StringHttpMessageConverter stringConverter = new StringHttpMessageConverter(
+                Charset.forName("UTF-8"));
+        HttpMessageConverters httpMessageConverters = new HttpMessageConverters(stringConverter,fastConverter);
+//        Optional<HttpMessageConverter<?>> first = httpMessageConverters.getConverters().stream().filter(s -> s instanceof StringHttpMessageConverter).findFirst();
+//        if(first.isPresent())
+//        {
+//            StringHttpMessageConverter s=(StringHttpMessageConverter)first.get();
+//            s.setDefaultCharset(Charset.forName("UTF-8"));
+//        }
+
+
+        return httpMessageConverters;
+    }
+
+
+}

+ 34 - 8
warning-web/src/main/java/com/gyee/wisdom/alarm/sharding/config/MyJsonConfig.java

@@ -1,18 +1,25 @@
 package com.gyee.wisdom.alarm.sharding.config;
 
+import com.alibaba.fastjson.serializer.NameFilter;
+import com.alibaba.fastjson.serializer.SerializeConfig;
 import com.alibaba.fastjson.serializer.SerializerFeature;
 import com.alibaba.fastjson.support.config.FastJsonConfig;
 import com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter;
+import org.springdoc.webmvc.ui.SwaggerWelcomeWebMvc;
 import org.springframework.boot.autoconfigure.http.HttpMessageConverters;
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
 import org.springframework.http.MediaType;
 import org.springframework.http.converter.HttpMessageConverter;
+import org.springframework.http.converter.StringHttpMessageConverter;
 import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
+import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
 
+import java.nio.charset.Charset;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.TimeZone;
+import java.util.stream.Collectors;
 
 /**
  * @description:
@@ -20,29 +27,48 @@ import java.util.TimeZone;
  * @date: 2022-04-06
  */
 @Configuration
-public class MyJsonConfig   {
+public class MyJsonConfig extends WebMvcConfigurerAdapter {
     //springboot 默认通过jackson来转化json,@JSONField(....)是fastjson的注解,因此要添加如下配置
     //Long类型在前端js中会丢失精度
-    @Bean
-    public HttpMessageConverters fastJsonHttpMessageConverters() {
+
+    public FastJsonHttpMessageConverter fastJsonHttpMessageConverters() {
         TimeZone.setDefault(TimeZone.getTimeZone("GMT+8"));
         FastJsonHttpMessageConverter fastConverter = new FastJsonHttpMessageConverter();
         FastJsonConfig fastJsonConfig = new FastJsonConfig();
-       fastJsonConfig.getSerializeConfig().put(String.class,MyStringSerializer.instance);
+        NameFilter nameFilter = (object, name, value) -> name;
+        SerializeConfig serializeConfig = fastJsonConfig.getSerializeConfig();
+        // serializeConfig .addFilter(SwaggerWelcomeWebMvc.class, nameFilter);
+        // serializeConfig.put(String.class,MyStringSerializer.instance);
+        fastJsonConfig.setSerializeConfig(serializeConfig);
+
         fastJsonConfig.setDateFormat("yyyy-MM-dd HH:mm:ss");    //自定义时间格式
         fastJsonConfig.setSerializerFeatures(
                 SerializerFeature.DisableCircularReferenceDetect
                 ,SerializerFeature.WriteMapNullValue
                 ,SerializerFeature.WriteDateUseDateFormat
-                );  //关闭循环引用,正常转换null值,格式化
-
+        );  //关闭循环引用,正常转换null值,格式化
 
         fastConverter.setFastJsonConfig(fastJsonConfig);
         List<MediaType> fastMediaTypes = new ArrayList<>();
         fastMediaTypes.add(MediaType.APPLICATION_JSON_UTF8);
         fastConverter.setSupportedMediaTypes(fastMediaTypes);
-        HttpMessageConverter<?> converter = fastConverter;
-        return new HttpMessageConverters(converter);
+        // HttpMessageConverter<?> converter = fastConverter;
+        return fastConverter;
+    }
+    public HttpMessageConverter<String> stringConverter() {
+        StringHttpMessageConverter converter = new StringHttpMessageConverter(
+                Charset.forName("UTF-8"));
+        return converter;
+    }
+    @Override
+    public void extendMessageConverters(List<HttpMessageConverter<?>> converters) {
+
+        // converters.clear();
+         converters.add(stringConverter());
+//        List<HttpMessageConverter<?>> collect = converters.stream().filter(s ->s instanceof StringHttpMessageConverter).collect(Collectors.toList());
+//        converters.removeAll(collect);
+        converters.add( fastJsonHttpMessageConverters());
+
     }
 
 }

+ 2 - 2
warning-web/src/main/resources/application.yaml

@@ -3,7 +3,7 @@
 
 spring:
   application:
-    name: alarm-sharding
+    name: warning-web
 #  #springboot2.6后默认不支持循环依赖,因此暴力设置允许循环依赖,轻易不要使用
 #  main:
 #    allow-circular-references: true
@@ -17,7 +17,7 @@ spring:
       enabled: true
   datasource:
     driver-class-name: com.mysql.cj.jdbc.Driver
-    url: jdbc:mysql://123.60.219.66/wisdom_cs_hnj?useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC
+    url: jdbc:mysql://123.60.219.66/wisdom_cs?useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC
     username: root
     password: gyeepd@123
 #    driver-class-name: oracle.jdbc.OracleDriver