Prechádzať zdrojové kódy

springboot升级到2.7.0

chendt 2 rokov pred
rodič
commit
b7b4ea8121

+ 1 - 1
pom.xml

@@ -23,7 +23,7 @@
         <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
         <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
         <maven.compiler.plugin.version>3.7.0</maven.compiler.plugin.version>
-        <spring-boot.version>2.3.12.RELEASE</spring-boot.version>
+        <spring-boot.version>2.7.0</spring-boot.version>
         <java.version>1.8</java.version>
         <guava.version>31.1-jre</guava.version>
         <hutool.version>5.7.22</hutool.version>

+ 2 - 20
yami-shop-api/src/main/resources/application.yml

@@ -12,26 +12,8 @@ spring:
     date-format: yyyy-MM-dd HH:mm:ss
     time-zone: GMT+8
   mvc:
-    formcontent:
-      filter:
-        enabled: false
-  autoconfigure:
-    exclude: org.springframework.boot.autoconfigure.jmx.JmxAutoConfiguration,\
-      org.springframework.boot.autoconfigure.gson.GsonAutoConfiguration,\
-      org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration,\
-      org.springframework.boot.autoconfigure.jdbc.XADataSourceAutoConfiguration,\
-      org.springframework.boot.autoconfigure.jdbc.JndiDataSourceAutoConfiguration,\
-      org.springframework.boot.autoconfigure.transaction.jta.JtaAutoConfiguration,\
-      org.springframework.boot.autoconfigure.websocket.WebSocketAutoConfiguration,\
-      org.springframework.boot.autoconfigure.websocket.WebSocketMessagingAutoConfiguration,\
-      org.springframework.boot.autoconfigure.freemarker.FreeMarkerAutoConfiguration,\
-      org.springframework.boot.autoconfigure.groovy.template.GroovyTemplateAutoConfiguration,\
-      org.springframework.boot.autoconfigure.mustache.MustacheAutoConfiguration,\
-      org.springframework.boot.autoconfigure.mail.MailSenderAutoConfiguration,\
-      org.springframework.boot.autoconfigure.mail.MailSenderValidatorAutoConfiguration,\
-      org.springframework.boot.actuate.autoconfigure.TraceRepositoryAutoConfiguration,\
-      org.springframework.boot.actuate.autoconfigure.TraceWebFilterAutoConfiguration,\
-      org.springframework.boot.actuate.autoconfigure.MetricFilterAutoConfiguration
+    pathmatch:
+      matching-strategy: ANT_PATH_MATCHER
 # mybaits-plus配置
 mybatis-plus:
   # MyBatis Mapper所对应的XML文件位置

+ 55 - 0
yami-shop-common/src/main/java/com/yami/shop/common/config/Swagger2Config.java

@@ -0,0 +1,55 @@
+package com.yami.shop.common.config;
+
+import org.springframework.beans.BeansException;
+import org.springframework.beans.factory.config.BeanPostProcessor;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.util.ReflectionUtils;
+import org.springframework.web.servlet.mvc.method.RequestMappingInfoHandlerMapping;
+import springfox.documentation.spring.web.plugins.WebFluxRequestHandlerProvider;
+import springfox.documentation.spring.web.plugins.WebMvcRequestHandlerProvider;
+
+import java.lang.reflect.Field;
+import java.util.List;
+import java.util.stream.Collectors;
+
+/**
+ * @author FrozenWatermelon
+ * @date 2022/4/24
+ */
+@Configuration
+public class Swagger2Config {
+
+    @Bean
+    public static BeanPostProcessor springfoxHandlerProviderBeanPostProcessor() {
+        return new BeanPostProcessor() {
+
+            @Override
+            public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException {
+                if (bean instanceof WebMvcRequestHandlerProvider || bean instanceof WebFluxRequestHandlerProvider) {
+                    customizeSpringfoxHandlerMappings(getHandlerMappings(bean));
+                }
+                return bean;
+            }
+
+            private <T extends RequestMappingInfoHandlerMapping> void customizeSpringfoxHandlerMappings(List<T> mappings) {
+                List<T> copy = mappings.stream()
+                        .filter(mapping -> mapping.getPatternParser() == null)
+                        .collect(Collectors.toList());
+                mappings.clear();
+                mappings.addAll(copy);
+            }
+
+            @SuppressWarnings("unchecked")
+            private List<RequestMappingInfoHandlerMapping> getHandlerMappings(Object bean) {
+                try {
+                    Field field = ReflectionUtils.findField(bean.getClass(), "handlerMappings");
+                    field.setAccessible(true);
+                    return (List<RequestMappingInfoHandlerMapping>) field.get(bean);
+                } catch (IllegalArgumentException | IllegalAccessException e) {
+                    throw new IllegalStateException(e);
+                }
+            }
+        };
+    }
+}

+ 11 - 7
yami-shop-common/src/main/java/com/yami/shop/common/util/RedisUtil.java

@@ -12,8 +12,10 @@ package com.yami.shop.common.util;
 
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.data.redis.core.RedisTemplate;
+import org.springframework.data.redis.core.StringRedisTemplate;
 import org.springframework.util.CollectionUtils;
 
+import java.util.Arrays;
 import java.util.concurrent.TimeUnit;
 
 /**
@@ -23,6 +25,8 @@ import java.util.concurrent.TimeUnit;
 public class RedisUtil {
     private static RedisTemplate<String, Object> redisTemplate = SpringContextUtils.getBean("redisTemplate", RedisTemplate.class);
 
+    public static final StringRedisTemplate STRING_REDIS_TEMPLATE = SpringContextUtils.getBean("stringRedisTemplate",StringRedisTemplate.class);
+
     //=============================common============================
 
     /**
@@ -50,7 +54,7 @@ public class RedisUtil {
      * @param key 键 不能为null
      * @return 时间(秒) 返回0代表为永久有效 失效时间为负数,说明该主键未设置失效时间(失效时间默认为-1)
      */
-    public static long getExpire(String key) {
+    public static Long getExpire(String key) {
         return redisTemplate.getExpire(key, TimeUnit.SECONDS);
     }
 
@@ -60,7 +64,7 @@ public class RedisUtil {
      * @param key 键
      * @return true 存在 false 不存在
      */
-    public static boolean hasKey(String key) {
+    public static Boolean hasKey(String key) {
         try {
             return redisTemplate.hasKey(key);
         } catch (Exception e) {
@@ -80,7 +84,7 @@ public class RedisUtil {
             if (key.length == 1) {
                 redisTemplate.delete(key[0]);
             } else {
-                redisTemplate.delete(CollectionUtils.arrayToList(key));
+                redisTemplate.delete(Arrays.asList(key));
             }
         }
     }
@@ -145,11 +149,11 @@ public class RedisUtil {
      * @param delta 要增加几(大于0)
      * @return
      */
-    public static long incr(String key, long delta) {
+    public static Long incr(String key, long delta) {
         if (delta < 0) {
             throw new RuntimeException("递增因子必须大于0");
         }
-        return redisTemplate.opsForValue().increment(key, delta);
+        return STRING_REDIS_TEMPLATE.opsForValue().increment(key, delta);
     }
 
     /**
@@ -159,10 +163,10 @@ public class RedisUtil {
      * @param delta 要减少几(小于0)
      * @return
      */
-    public static long decr(String key, long delta) {
+    public static Long decr(String key, long delta) {
         if (delta < 0) {
             throw new RuntimeException("递减因子必须大于0");
         }
-        return redisTemplate.opsForValue().increment(key, -delta);
+        return STRING_REDIS_TEMPLATE.opsForValue().increment(key, -delta);
     }
 }

+ 1 - 1
yami-shop-quartz/src/main/resources/application-quartz.yml

@@ -9,7 +9,7 @@ spring:
             instanceName: clusteredScheduler
             instanceId: AUTO
           jobStore:
-            class: org.quartz.impl.jdbcjobstore.JobStoreTX
+            class: org.springframework.scheduling.quartz.LocalDataSourceJobStore
             driverDelegateClass: org.quartz.impl.jdbcjobstore.StdJDBCDelegate
             tablePrefix: QRTZ_
             isClustered: true

+ 2 - 2
yami-shop-security/yami-shop-security-common/src/main/java/com/yami/shop/security/common/config/CorsConfig.java

@@ -21,8 +21,8 @@ public class CorsConfig {
     @Bean
     public CorsConfigurationSource corsConfigurationSource() {
         CorsConfiguration configuration = new CorsConfiguration();
-//        configuration.addAllowedOriginPattern("*");
-        configuration.addAllowedOrigin("*");
+        configuration.addAllowedOriginPattern("*");
+//        configuration.addAllowedOrigin("*");
         //修改为添加而不是设置
         configuration.addAllowedMethod("*");
         //这里很重要,起码需要允许 Access-Control-Allow-Origin