diff --git a/pom.xml b/pom.xml index f3224e9..1db4f3e 100644 --- a/pom.xml +++ b/pom.xml @@ -23,7 +23,7 @@ UTF-8 UTF-8 3.7.0 - 2.3.12.RELEASE + 2.7.0 1.8 31.1-jre 5.7.22 diff --git a/yami-shop-api/src/main/resources/application.yml b/yami-shop-api/src/main/resources/application.yml index 3f89780..26d9859 100644 --- a/yami-shop-api/src/main/resources/application.yml +++ b/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文件位置 diff --git a/yami-shop-common/src/main/java/com/yami/shop/common/config/Swagger2Config.java b/yami-shop-common/src/main/java/com/yami/shop/common/config/Swagger2Config.java new file mode 100644 index 0000000..cf475da --- /dev/null +++ b/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 void customizeSpringfoxHandlerMappings(List mappings) { + List copy = mappings.stream() + .filter(mapping -> mapping.getPatternParser() == null) + .collect(Collectors.toList()); + mappings.clear(); + mappings.addAll(copy); + } + + @SuppressWarnings("unchecked") + private List getHandlerMappings(Object bean) { + try { + Field field = ReflectionUtils.findField(bean.getClass(), "handlerMappings"); + field.setAccessible(true); + return (List) field.get(bean); + } catch (IllegalArgumentException | IllegalAccessException e) { + throw new IllegalStateException(e); + } + } + }; + } +} diff --git a/yami-shop-common/src/main/java/com/yami/shop/common/util/RedisUtil.java b/yami-shop-common/src/main/java/com/yami/shop/common/util/RedisUtil.java index bf16ecd..1449258 100644 --- a/yami-shop-common/src/main/java/com/yami/shop/common/util/RedisUtil.java +++ b/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 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); } } \ No newline at end of file diff --git a/yami-shop-quartz/src/main/resources/application-quartz.yml b/yami-shop-quartz/src/main/resources/application-quartz.yml index 47fa422..c2b7366 100644 --- a/yami-shop-quartz/src/main/resources/application-quartz.yml +++ b/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 diff --git a/yami-shop-security/yami-shop-security-common/src/main/java/com/yami/shop/security/common/config/CorsConfig.java b/yami-shop-security/yami-shop-security-common/src/main/java/com/yami/shop/security/common/config/CorsConfig.java index 890272a..6727c6b 100644 --- a/yami-shop-security/yami-shop-security-common/src/main/java/com/yami/shop/security/common/config/CorsConfig.java +++ b/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