Bladeren bron

update version
remove zuul
add spring gateway

Mr.qian 2 dagen geleden
bovenliggende
commit
62897e8b9c

+ 65 - 0
mall-service/pom.xml

@@ -31,6 +31,7 @@
         <dependency>
             <groupId>org.apache.rocketmq</groupId>
             <artifactId>rocketmq-spring-boot-starter</artifactId>
+            <version>2.2.2</version>
         </dependency>
 
 
@@ -102,6 +103,70 @@
             <artifactId>cif-api</artifactId>
             <version>1.0.0-SNAPSHOT</version>
         </dependency>
+
+        <dependency>
+            <groupId>org.springframework.cloud</groupId>
+            <artifactId>spring-cloud-starter-loadbalancer</artifactId>
+        </dependency>
+
+        <dependency>
+            <groupId>org.springframework.cloud</groupId>
+            <artifactId>spring-cloud-starter-bootstrap</artifactId>
+        </dependency>
+
+        <dependency>
+            <groupId>org.apache.dubbo</groupId>
+            <artifactId>dubbo-serialization-kryo</artifactId>
+            <version>2.7.9</version>
+        </dependency>
+
+        <dependency>
+            <groupId>org.springdoc</groupId>
+            <artifactId>springdoc-openapi-ui</artifactId>
+            <version>1.6.14</version>
+        </dependency>
+
+        <dependency>
+            <groupId>com.alibaba.cloud</groupId>
+            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
+            <version>2.2.9.RELEASE</version>
+        </dependency>
+        <dependency>
+            <groupId>com.alibaba.cloud</groupId>
+            <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
+            <version>2.2.9.RELEASE</version>
+        </dependency>
+
+        <dependency>
+            <groupId>com.alibaba.nacos</groupId>
+            <artifactId>nacos-client</artifactId>
+            <version>2.2.2</version>
+        </dependency>
+
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-web</artifactId>
+            <!-- 移除tomcat容器-->
+            <exclusions>
+                <exclusion>
+                    <groupId>org.springframework.boot</groupId>
+                    <artifactId>spring-boot-starter-tomcat</artifactId>
+                </exclusion>
+            </exclusions>
+        </dependency>
+        <!-- 替换undertow容器 -->
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-undertow</artifactId>
+        </dependency>
+
+        <dependency>
+            <groupId>junit</groupId>
+            <artifactId>junit</artifactId>
+            <version>4.13.2</version>
+            <scope>test</scope>
+        </dependency>
+
     </dependencies>
 
     <build>

+ 1 - 1
mall-service/src/main/java/com/txz/mall/MallApplication.java

@@ -15,7 +15,7 @@ import org.springframework.web.client.RestTemplate;
 
 @EnableDiscoveryClient
 @SpringBootApplication
-@EnableSwagger2Doc
+// @EnableSwagger2Doc
 //@RibbonClients(value = {
 //        @RibbonClient(name = "operating",configuration = RibbonWeightedResponseTimeRuleConfig.class)
 //})

+ 1 - 1
mall-service/src/main/java/com/txz/mall/configurer/MyWebMvcConfigurer.java

@@ -59,7 +59,7 @@ public class MyWebMvcConfigurer implements WebMvcConfigurer {
     @Override
     public void addCorsMappings(CorsRegistry registry) {
         registry.addMapping("/**")
-                .allowedOrigins("*")
+                .allowedOriginPatterns("*")
                 .allowedMethods("GET", "POST", "PUT", "DELETE")
                 .allowedHeaders("*")
                 .allowCredentials(true)

+ 33 - 39
mall-service/src/main/java/com/txz/mall/configurer/SwaggerConfig.java

@@ -1,6 +1,12 @@
 package com.txz.mall.configurer;
 
 import io.swagger.annotations.ApiOperation;
+import io.swagger.v3.oas.models.Components;
+import io.swagger.v3.oas.models.OpenAPI;
+import io.swagger.v3.oas.models.info.Contact;
+import io.swagger.v3.oas.models.info.Info;
+import io.swagger.v3.oas.models.info.License;
+import io.swagger.v3.oas.models.parameters.Parameter;
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
 import org.springframework.context.annotation.Profile;
@@ -10,8 +16,6 @@ import springfox.documentation.builders.PathSelectors;
 import springfox.documentation.builders.RequestHandlerSelectors;
 import springfox.documentation.schema.ModelRef;
 import springfox.documentation.service.ApiInfo;
-import springfox.documentation.service.Contact;
-import springfox.documentation.service.Parameter;
 import springfox.documentation.spi.DocumentationType;
 import springfox.documentation.spring.web.plugins.Docket;
 import springfox.documentation.swagger2.annotations.EnableSwagger2;
@@ -23,43 +27,33 @@ import java.util.List;
  * @author Fcx
  */
 @Configuration
-@EnableSwagger2
-@Profile({"dev","test"})
+@Profile({"dev", "test"})
 public class SwaggerConfig {
-
+    
     @Bean
-    public Docket docket(){
-        //添加header参数
-        List<Parameter> pars = new ArrayList<>();
-        ParameterBuilder ticketPar = new ParameterBuilder();
-        ticketPar.name("token").description("user token")
-                .modelRef(new ModelRef("string")).parameterType("header")
-                .required(false).build(); //header中的ticket参数非必填,传空也可以
-        ticketPar = new ParameterBuilder();
-        ticketPar.name("appCode").description("appCode")
-                .modelRef(new ModelRef("string")).parameterType("header")
-                .required(false).build(); //header中的ticket参数非必填,传空也可以
-
-        pars.add(ticketPar.build());
-        return new Docket(DocumentationType.SWAGGER_2)
-                .globalOperationParameters(pars)
-                .groupName("demo")
-                .apiInfo(getApiInfo())
-                .select()
-                //设置basePackage会将包下的所有被@Api标记类的所有方法作为api
-                .apis(RequestHandlerSelectors.basePackage("com.txz.mall.controller"))
-                //只有标记了@ApiOperation的方法才会暴露出给swagger
-                .apis(RequestHandlerSelectors.withMethodAnnotation(ApiOperation.class))
-                .paths(PathSelectors.regex("/api/.*")).build();
+    public OpenAPI customOpenAPI() {
+        return new OpenAPI()
+                .components(new Components()
+                        .addParameters("token", new io.swagger.v3.oas.models.parameters.Parameter()
+                                .name("token")
+                                .description("user token")
+                                .required(false)
+                                .in("header"))
+                        .addParameters("appCode", new Parameter()
+                                .name("appCode")
+                                .description("appCode")
+                                .required(false)
+                                .in("header")))
+                .info(new Info()
+                        .title("API接口文档")
+                        .description("swagger2 demo api")
+                        .version("1.0")
+                        .contact(new Contact()
+                                .name("admin")
+                                .url("http://localhost/swagger-ui.html")
+                                .email("xxx@qq.com"))
+                        .license(new License()
+                                .name("Apache 2.0")
+                                .url("http://localhost/swagger-ui.html")));
     }
-
-    private ApiInfo getApiInfo(){
-        return new ApiInfoBuilder()
-                .title("API接口文档")
-                .description("swagger2 demo api")
-                .termsOfServiceUrl("http://localhost/swagger-ui.html")
-                .version("1.0").contact(new Contact("admin", "http://localhost/swagger-ui.html", "xxx@qq.com"))
-                .build();
-    }
-
-}
+}

+ 14 - 14
mall-service/src/main/java/com/txz/mall/configurer/shutdown/UndertowExtraConfiguration.java

@@ -11,17 +11,17 @@ import org.springframework.stereotype.Component;
  * @Date: 2019/11/29 15:13
  * @Version 1.0
  */
-@Component
-@AllArgsConstructor
-public class UndertowExtraConfiguration {
-
-    private final GracefulShutdownUndertowWrapper gracefulShutdownWrapper;
-
-    @Bean
-    public UndertowServletWebServerFactory servletWebServerFactory() {
-        UndertowServletWebServerFactory factory = new UndertowServletWebServerFactory();
-        factory.addDeploymentInfoCustomizers(deploymentInfo -> deploymentInfo.addOuterHandlerChainWrapper(gracefulShutdownWrapper));
-        factory.addBuilderCustomizers(builder -> builder.setServerOption(UndertowOptions.ENABLE_STATISTICS, true));
-        return factory;
-    }
-}
+// @Component
+// @AllArgsConstructor
+// public class UndertowExtraConfiguration {
+//
+//     private final GracefulShutdownUndertowWrapper gracefulShutdownWrapper;
+//
+//     @Bean
+//     public UndertowServletWebServerFactory servletWebServerFactory() {
+//         UndertowServletWebServerFactory factory = new UndertowServletWebServerFactory();
+//         factory.addDeploymentInfoCustomizers(deploymentInfo -> deploymentInfo.addOuterHandlerChainWrapper(gracefulShutdownWrapper));
+//         factory.addBuilderCustomizers(builder -> builder.setServerOption(UndertowOptions.ENABLE_STATISTICS, true));
+//         return factory;
+//     }
+// }

+ 2 - 5
mall-service/src/main/java/com/txz/mall/core/RedisUtil.java

@@ -7,10 +7,7 @@ import org.springframework.stereotype.Component;
 import org.springframework.util.CollectionUtils;
 
 import javax.annotation.Resource;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
+import java.util.*;
 import java.util.concurrent.TimeUnit;
  
  
@@ -84,7 +81,7 @@ public class RedisUtil {
 			if(key.length==1){
 				redisTemplate.delete(key[0]);
 			}else{
-				redisTemplate.delete(CollectionUtils.arrayToList(key));
+				redisTemplate.delete(Arrays.asList(key));
 			}
 		}
 	}

+ 2 - 1
mall-service/src/main/java/com/txz/mall/service/impl/StoreOrderServiceImpl.java

@@ -49,6 +49,7 @@ import javax.servlet.ServletOutputStream;
 import javax.servlet.http.HttpServletResponse;
 import java.io.IOException;
 import java.math.BigDecimal;
+import java.net.URLEncoder;
 import java.util.*;
 import java.util.stream.Collectors;
 
@@ -292,7 +293,7 @@ public class StoreOrderServiceImpl extends AbstractService<StoreOrder> implement
             //response为HttpServletResponse对象
             response.setContentType("application/vnd.ms-excel;charset=utf-8");
             //test.xls是弹出下载对话框的文件名,不能为中文,中文请自行编码
-            response.setHeader("Content-Disposition", "attachment;filename=" + new String(("订单导出").getBytes("UTF-8"), "ISO-8859-1") + ".xls");
+            response.setHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode("订单导出", "UTF-8") + ".xls");
             ServletOutputStream out = response.getOutputStream();
             //out为OutputStream,需要写出到的目标流
             writer.flush(out);

+ 16 - 11
mall-service/src/main/resources/bootstrap.properties

@@ -1,7 +1,9 @@
 spring.application.name=mall
 server.port=8101
 spring.mvc.throw-exception-if-no-handler-found=true
-spring.resources.add-mappings=true
+spring.web.resources.add-mappings=true
+spring.main.allow-circular-references=true
+springfox.documentation.enabled=false
 
 multipart.maxFileSize=50Mb
 #spring.servlet.multipart.enabled=true
@@ -13,7 +15,7 @@ spring.servlet.multipart.max-request-size=1000MB
 # dubbo\u4F20\u8F93\u7684\u6700\u5927\u6587\u4EF6\u5927\u5C0F, \u9ED8\u8BA48388608  8M, \u8BBE\u7F6E80M
 dubbo.protocol.dubbo.payload=83886080
 spring.profiles.active=dev
-local.nacos=124.222.152.234:8848
+local.nacos=124.222.152.234:8848 
 dev.nacos=124.222.152.234:8848
 #dev.nacos=172.17.0.3:8848
 #pro.nacos=172.17.0.15:8848,172.17.0.15:8849,172.17.0.13:8848
@@ -30,12 +32,15 @@ spring.cloud.nacos.config.server-addr=${${spring.profiles.active}.nacos}
 spring.cloud.nacos.config.prefix=${spring.application.name}
 spring.cloud.nacos.config.file-extension=properties
 
-spring.cloud.nacos.config.ext-config[0].data-id=mq-${spring.profiles.active}.properties
-spring.cloud.nacos.config.ext-config[0].refresh=true
-spring.cloud.nacos.config.ext-config[1].data-id=redis-${spring.profiles.active}.properties
-spring.cloud.nacos.config.ext-config[1].refresh=true
+#spring.cloud.nacos.config.ext-config[0].data-id=mq-${spring.profiles.active}.properties
+#spring.cloud.nacos.config.ext-config[0].refresh=true
+#spring.cloud.nacos.config.ext-config[1].data-id=redis-${spring.profiles.active}.properties
+#spring.cloud.nacos.config.ext-config[1].refresh=true
 #spring.cloud.nacos.config.ext-config[2].data-id=cos-${spring.profiles.active}.properties
 #spring.cloud.nacos.config.ext-config[2].refresh=true
+spring.cloud.nacos.config.extension-configs[0]=mq-${spring.profiles.active}.properties
+spring.cloud.nacos.config.extension-configs[1]=redis-${spring.profiles.active}.properties
+spring.cloud.nacos.config.extension-configs[2]=${spring.application.name}-${spring.profiles.active}.properties
 dubbo.protocol.serialization=kryo
 #dubbo.protocol.serialization=
 dubbo.protocol.optimizer=
@@ -53,9 +58,9 @@ dubbo.reference.check=false
 dubbo.consumer.check=false
 dubbo.registry.check=false
 
-management.endpoints.web.exposure.include=*
-management.endpoint.shutdown.enabled=true
-management.endpoints.web.base-path=/${spring.application.name}
-management.endpoints.web.path-mapping.shutdown=/shutThisBoot
-management.server.address=127.0.0.1
+#management.endpoints.web.exposure.include=*
+#management.endpoint.shutdown.enabled=true
+#management.endpoints.web.base-path=/${spring.application.name}
+#management.endpoints.web.path-mapping.shutdown=/shutThisBoot
+#management.server.address=127.0.0.1
 

+ 1 - 1
mall-service/src/main/resources/logback.xml

@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <configuration debug="false">
     <!--定义日志文件的存储地址 勿在 LogBack 的配置中使用相对路径-->
-    <property name="LOG_HOME" value="/var/logs/mall" />
+    <property name="LOG_HOME" value="./logs/mall" />
     <!-- 控制台输出 -->
     <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
         <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">

+ 9 - 9
pom.xml

@@ -8,7 +8,7 @@
     <parent>
         <groupId>org.springframework.boot</groupId>
         <artifactId>spring-boot-starter-parent</artifactId>
-		<version>2.0.5.RELEASE</version>
+        <version>2.7.18</version>
     </parent>
 
 
@@ -24,17 +24,17 @@
 			<dependency>
 				<groupId>org.springframework.cloud</groupId>
 				<artifactId>spring-cloud-dependencies</artifactId>
-				<version>Finchley.SR1</version>
-				<type>pom</type>
-				<scope>import</scope>
-			</dependency>
-			<dependency>
-				<groupId>org.springframework.cloud</groupId>
-				<artifactId>spring-cloud-alibaba-dependencies</artifactId>
-				<version>0.2.2.RELEASE</version>
+				<version>2021.0.8</version>
 				<type>pom</type>
 				<scope>import</scope>
 			</dependency>
+			<!-- <dependency> -->
+			<!-- 	<groupId>org.springframework.cloud</groupId> -->
+			<!-- 	<artifactId>spring-cloud-alibaba-dependencies</artifactId> -->
+			<!-- 	<version>0.2.2.RELEASE</version> -->
+			<!-- 	<type>pom</type> -->
+			<!-- 	<scope>import</scope> -->
+			<!-- </dependency> -->
 		</dependencies>
 	</dependencyManagement>
 	<distributionManagement>