Browse Source

升级Spring Cloud相关组件到最新版

RuoYi 4 years ago
parent
commit
2f3949d732

+ 11 - 7
pom.xml

@@ -17,10 +17,10 @@
17
         <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
17
         <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
18
         <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
18
         <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
19
         <java.version>1.8</java.version>
19
         <java.version>1.8</java.version>
20
-        <spring-boot.version>2.3.7.RELEASE</spring-boot.version>
21
-        <spring-cloud.version>Hoxton.SR9</spring-cloud.version>
22
-        <spring-cloud-alibaba.version>2.2.5.RELEASE</spring-cloud-alibaba.version>
23
-		<spring-boot-admin.version>2.3.1</spring-boot-admin.version>
20
+        <spring-boot.version>2.5.0</spring-boot.version>
21
+        <spring-cloud.version>2020.0.2</spring-cloud.version>
22
+        <spring-cloud-alibaba.version>2021.1</spring-cloud-alibaba.version>
23
+		<spring-boot-admin.version>2.4.1</spring-boot-admin.version>
24
         <spring-boot.mybatis>2.1.4</spring-boot.mybatis>
24
         <spring-boot.mybatis>2.1.4</spring-boot.mybatis>
25
         <swagger.fox.version>2.9.2</swagger.fox.version>
25
         <swagger.fox.version>2.9.2</swagger.fox.version>
26
         <swagger.core.version>1.5.24</swagger.core.version>
26
         <swagger.core.version>1.5.24</swagger.core.version>
@@ -28,12 +28,12 @@
28
         <kaptcha.version>2.3.2</kaptcha.version>
28
         <kaptcha.version>2.3.2</kaptcha.version>
29
         <pagehelper.boot.version>1.3.0</pagehelper.boot.version>
29
         <pagehelper.boot.version>1.3.0</pagehelper.boot.version>
30
         <druid.version>1.2.6</druid.version>
30
         <druid.version>1.2.6</druid.version>
31
-        <dynamic-ds.version>3.2.1</dynamic-ds.version>
31
+        <dynamic-ds.version>3.3.2</dynamic-ds.version>
32
         <commons.io.version>2.5</commons.io.version>
32
         <commons.io.version>2.5</commons.io.version>
33
         <commons.fileupload.version>1.3.3</commons.fileupload.version>
33
         <commons.fileupload.version>1.3.3</commons.fileupload.version>
34
         <velocity.version>1.7</velocity.version>
34
         <velocity.version>1.7</velocity.version>
35
         <fastjson.version>1.2.76</fastjson.version>
35
         <fastjson.version>1.2.76</fastjson.version>
36
-        <minio.version>8.0.3</minio.version>
36
+        <minio.version>8.2.1</minio.version>
37
 		<poi.version>4.1.2</poi.version>
37
 		<poi.version>4.1.2</poi.version>
38
         <common-pool.version>2.6.2</common-pool.version>
38
         <common-pool.version>2.6.2</common-pool.version>
39
     </properties>
39
     </properties>
@@ -234,7 +234,11 @@
234
     <packaging>pom</packaging>
234
     <packaging>pom</packaging>
235
 
235
 
236
     <dependencies>
236
     <dependencies>
237
-        
237
+        <!-- bootstrap 启动器 -->
238
+        <dependency>
239
+            <groupId>org.springframework.cloud</groupId>
240
+            <artifactId>spring-cloud-starter-bootstrap</artifactId>
241
+        </dependency>
238
     </dependencies>
242
     </dependencies>
239
 
243
 
240
     <build>
244
     <build>

+ 1 - 1
ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/RemoteFileFallbackFactory.java

@@ -2,12 +2,12 @@ package com.ruoyi.system.api.factory;
2
 
2
 
3
 import org.slf4j.Logger;
3
 import org.slf4j.Logger;
4
 import org.slf4j.LoggerFactory;
4
 import org.slf4j.LoggerFactory;
5
+import org.springframework.cloud.openfeign.FallbackFactory;
5
 import org.springframework.stereotype.Component;
6
 import org.springframework.stereotype.Component;
6
 import org.springframework.web.multipart.MultipartFile;
7
 import org.springframework.web.multipart.MultipartFile;
7
 import com.ruoyi.common.core.domain.R;
8
 import com.ruoyi.common.core.domain.R;
8
 import com.ruoyi.system.api.RemoteFileService;
9
 import com.ruoyi.system.api.RemoteFileService;
9
 import com.ruoyi.system.api.domain.SysFile;
10
 import com.ruoyi.system.api.domain.SysFile;
10
-import feign.hystrix.FallbackFactory;
11
 
11
 
12
 /**
12
 /**
13
  * 文件服务降级处理
13
  * 文件服务降级处理

+ 1 - 1
ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/RemoteLogFallbackFactory.java

@@ -2,11 +2,11 @@ package com.ruoyi.system.api.factory;
2
 
2
 
3
 import org.slf4j.Logger;
3
 import org.slf4j.Logger;
4
 import org.slf4j.LoggerFactory;
4
 import org.slf4j.LoggerFactory;
5
+import org.springframework.cloud.openfeign.FallbackFactory;
5
 import org.springframework.stereotype.Component;
6
 import org.springframework.stereotype.Component;
6
 import com.ruoyi.common.core.domain.R;
7
 import com.ruoyi.common.core.domain.R;
7
 import com.ruoyi.system.api.RemoteLogService;
8
 import com.ruoyi.system.api.RemoteLogService;
8
 import com.ruoyi.system.api.domain.SysOperLog;
9
 import com.ruoyi.system.api.domain.SysOperLog;
9
-import feign.hystrix.FallbackFactory;
10
 
10
 
11
 /**
11
 /**
12
  * 日志服务降级处理
12
  * 日志服务降级处理

+ 1 - 1
ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/RemoteUserFallbackFactory.java

@@ -2,11 +2,11 @@ package com.ruoyi.system.api.factory;
2
 
2
 
3
 import org.slf4j.Logger;
3
 import org.slf4j.Logger;
4
 import org.slf4j.LoggerFactory;
4
 import org.slf4j.LoggerFactory;
5
+import org.springframework.cloud.openfeign.FallbackFactory;
5
 import org.springframework.stereotype.Component;
6
 import org.springframework.stereotype.Component;
6
 import com.ruoyi.common.core.domain.R;
7
 import com.ruoyi.common.core.domain.R;
7
 import com.ruoyi.system.api.RemoteUserService;
8
 import com.ruoyi.system.api.RemoteUserService;
8
 import com.ruoyi.system.api.model.LoginUser;
9
 import com.ruoyi.system.api.model.LoginUser;
9
-import feign.hystrix.FallbackFactory;
10
 
10
 
11
 /**
11
 /**
12
  * 用户服务降级处理
12
  * 用户服务降级处理

+ 14 - 8
ruoyi-common/ruoyi-common-core/pom.xml

@@ -17,23 +17,29 @@
17
 
17
 
18
     <dependencies>
18
     <dependencies>
19
 
19
 
20
-    	<!-- SpringCloud Openfeign -->
20
+        <!-- SpringCloud Openfeign -->
21
         <dependency>
21
         <dependency>
22
             <groupId>org.springframework.cloud</groupId>
22
             <groupId>org.springframework.cloud</groupId>
23
             <artifactId>spring-cloud-starter-openfeign</artifactId>
23
             <artifactId>spring-cloud-starter-openfeign</artifactId>
24
-    	</dependency>
24
+        </dependency>
25
+        
26
+        <!-- SpringCloud Loadbalancer -->
27
+        <dependency>
28
+            <groupId>org.springframework.cloud</groupId>
29
+            <artifactId>spring-cloud-starter-loadbalancer</artifactId>
30
+        </dependency>
25
 
31
 
26
-    	<!-- Spring Context Support -->
27
-    	<dependency>
32
+        <!-- Spring Context Support -->
33
+        <dependency>
28
             <groupId>org.springframework</groupId>
34
             <groupId>org.springframework</groupId>
29
             <artifactId>spring-context-support</artifactId>
35
             <artifactId>spring-context-support</artifactId>
30
-    	</dependency>
36
+        </dependency>
31
 
37
 
32
-    	<!-- Spring Web -->
33
-    	<dependency>
38
+        <!-- Spring Web -->
39
+        <dependency>
34
             <groupId>org.springframework</groupId>
40
             <groupId>org.springframework</groupId>
35
             <artifactId>spring-web</artifactId>
41
             <artifactId>spring-web</artifactId>
36
-    	</dependency>
42
+        </dependency>
37
 
43
 
38
         <!-- Apache Commons Pool2 -->
44
         <!-- Apache Commons Pool2 -->
39
         <dependency>
45
         <dependency>

+ 24 - 0
ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/StringUtils.java

@@ -237,6 +237,30 @@ public class StringUtils extends org.apache.commons.lang3.StringUtils
237
     }
237
     }
238
 
238
 
239
     /**
239
     /**
240
+     * 判断是否为空,并且不是空白字符
241
+     * 
242
+     * @param str 要判断的value
243
+     * @return 结果
244
+     */
245
+    public static boolean hasText(String str)
246
+    {
247
+        return (str != null && !str.isEmpty() && containsText(str));
248
+    }
249
+
250
+    private static boolean containsText(CharSequence str)
251
+    {
252
+        int strLen = str.length();
253
+        for (int i = 0; i < strLen; i++)
254
+        {
255
+            if (!Character.isWhitespace(str.charAt(i)))
256
+            {
257
+                return true;
258
+            }
259
+        }
260
+        return false;
261
+    }
262
+
263
+    /**
240
      * 格式化文本, {} 表示占位符<br>
264
      * 格式化文本, {} 表示占位符<br>
241
      * 此方法只是简单将占位符 {} 按照顺序替换为参数<br>
265
      * 此方法只是简单将占位符 {} 按照顺序替换为参数<br>
242
      * 如果想输出 {} 使用 \\转义 { 即可,如果想输出 {} 之前的 \ 使用双转义符 \\\\ 即可<br>
266
      * 如果想输出 {} 使用 \\转义 { 即可,如果想输出 {} 之前的 \ 使用双转义符 \\\\ 即可<br>

+ 10 - 10
ruoyi-common/ruoyi-common-security/src/main/java/com/ruoyi/common/security/aspect/PreAuthorizeAspect.java

@@ -11,8 +11,8 @@ import org.springframework.beans.factory.annotation.Autowired;
11
 import org.springframework.stereotype.Component;
11
 import org.springframework.stereotype.Component;
12
 import org.springframework.util.CollectionUtils;
12
 import org.springframework.util.CollectionUtils;
13
 import org.springframework.util.PatternMatchUtils;
13
 import org.springframework.util.PatternMatchUtils;
14
-import org.springframework.util.StringUtils;
15
 import com.ruoyi.common.core.exception.PreAuthorizeException;
14
 import com.ruoyi.common.core.exception.PreAuthorizeException;
15
+import com.ruoyi.common.core.utils.StringUtils;
16
 import com.ruoyi.common.security.annotation.PreAuthorize;
16
 import com.ruoyi.common.security.annotation.PreAuthorize;
17
 import com.ruoyi.common.security.service.TokenService;
17
 import com.ruoyi.common.security.service.TokenService;
18
 import com.ruoyi.system.api.model.LoginUser;
18
 import com.ruoyi.system.api.model.LoginUser;
@@ -50,7 +50,7 @@ public class PreAuthorizeAspect
50
             return point.proceed();
50
             return point.proceed();
51
         }
51
         }
52
 
52
 
53
-        if (!StringUtils.isEmpty(annotation.hasPermi()))
53
+        if (StringUtils.isNotEmpty(annotation.hasPermi()))
54
         {
54
         {
55
             if (hasPermi(annotation.hasPermi()))
55
             if (hasPermi(annotation.hasPermi()))
56
             {
56
             {
@@ -58,7 +58,7 @@ public class PreAuthorizeAspect
58
             }
58
             }
59
             throw new PreAuthorizeException();
59
             throw new PreAuthorizeException();
60
         }
60
         }
61
-        else if (!StringUtils.isEmpty(annotation.lacksPermi()))
61
+        else if (StringUtils.isNotEmpty(annotation.lacksPermi()))
62
         {
62
         {
63
             if (lacksPermi(annotation.lacksPermi()))
63
             if (lacksPermi(annotation.lacksPermi()))
64
             {
64
             {
@@ -74,7 +74,7 @@ public class PreAuthorizeAspect
74
             }
74
             }
75
             throw new PreAuthorizeException();
75
             throw new PreAuthorizeException();
76
         }
76
         }
77
-        else if (!StringUtils.isEmpty(annotation.hasRole()))
77
+        else if (StringUtils.isNotEmpty(annotation.hasRole()))
78
         {
78
         {
79
             if (hasRole(annotation.hasRole()))
79
             if (hasRole(annotation.hasRole()))
80
             {
80
             {
@@ -82,7 +82,7 @@ public class PreAuthorizeAspect
82
             }
82
             }
83
             throw new PreAuthorizeException();
83
             throw new PreAuthorizeException();
84
         }
84
         }
85
-        else if (!StringUtils.isEmpty(annotation.lacksRole()))
85
+        else if (StringUtils.isNotEmpty(annotation.lacksRole()))
86
         {
86
         {
87
             if (lacksRole(annotation.lacksRole()))
87
             if (lacksRole(annotation.lacksRole()))
88
             {
88
             {
@@ -111,7 +111,7 @@ public class PreAuthorizeAspect
111
     public boolean hasPermi(String permission)
111
     public boolean hasPermi(String permission)
112
     {
112
     {
113
         LoginUser userInfo = tokenService.getLoginUser();
113
         LoginUser userInfo = tokenService.getLoginUser();
114
-        if (StringUtils.isEmpty(userInfo) || CollectionUtils.isEmpty(userInfo.getPermissions()))
114
+        if (StringUtils.isNull(userInfo) || CollectionUtils.isEmpty(userInfo.getPermissions()))
115
         {
115
         {
116
             return false;
116
             return false;
117
         }
117
         }
@@ -138,7 +138,7 @@ public class PreAuthorizeAspect
138
     public boolean hasAnyPermi(String[] permissions)
138
     public boolean hasAnyPermi(String[] permissions)
139
     {
139
     {
140
         LoginUser userInfo = tokenService.getLoginUser();
140
         LoginUser userInfo = tokenService.getLoginUser();
141
-        if (StringUtils.isEmpty(userInfo) || CollectionUtils.isEmpty(userInfo.getPermissions()))
141
+        if (StringUtils.isNull(userInfo) || CollectionUtils.isEmpty(userInfo.getPermissions()))
142
         {
142
         {
143
             return false;
143
             return false;
144
         }
144
         }
@@ -162,7 +162,7 @@ public class PreAuthorizeAspect
162
     public boolean hasRole(String role)
162
     public boolean hasRole(String role)
163
     {
163
     {
164
         LoginUser userInfo = tokenService.getLoginUser();
164
         LoginUser userInfo = tokenService.getLoginUser();
165
-        if (StringUtils.isEmpty(userInfo) || CollectionUtils.isEmpty(userInfo.getRoles()))
165
+        if (StringUtils.isNull(userInfo) || CollectionUtils.isEmpty(userInfo.getRoles()))
166
         {
166
         {
167
             return false;
167
             return false;
168
         }
168
         }
@@ -196,7 +196,7 @@ public class PreAuthorizeAspect
196
     public boolean hasAnyRoles(String[] roles)
196
     public boolean hasAnyRoles(String[] roles)
197
     {
197
     {
198
         LoginUser userInfo = tokenService.getLoginUser();
198
         LoginUser userInfo = tokenService.getLoginUser();
199
-        if (StringUtils.isEmpty(userInfo) || CollectionUtils.isEmpty(userInfo.getRoles()))
199
+        if (StringUtils.isNull(userInfo) || CollectionUtils.isEmpty(userInfo.getRoles()))
200
         {
200
         {
201
             return false;
201
             return false;
202
         }
202
         }
@@ -220,6 +220,6 @@ public class PreAuthorizeAspect
220
     private boolean hasPermissions(Collection<String> authorities, String permission)
220
     private boolean hasPermissions(Collection<String> authorities, String permission)
221
     {
221
     {
222
         return authorities.stream().filter(StringUtils::hasText)
222
         return authorities.stream().filter(StringUtils::hasText)
223
-                .anyMatch(x -> ALL_PERMISSION.contains(x) || PatternMatchUtils.simpleMatch(permission, x));
223
+                .anyMatch(x -> ALL_PERMISSION.contains(x) || PatternMatchUtils.simpleMatch(x, permission));
224
     }
224
     }
225
 }
225
 }

+ 0 - 9
ruoyi-gateway/src/main/java/com/ruoyi/gateway/config/GatewayConfig.java

@@ -1,11 +1,9 @@
1
 package com.ruoyi.gateway.config;
1
 package com.ruoyi.gateway.config;
2
 
2
 
3
-import org.springframework.cloud.gateway.filter.GlobalFilter;
4
 import org.springframework.context.annotation.Bean;
3
 import org.springframework.context.annotation.Bean;
5
 import org.springframework.context.annotation.Configuration;
4
 import org.springframework.context.annotation.Configuration;
6
 import org.springframework.core.Ordered;
5
 import org.springframework.core.Ordered;
7
 import org.springframework.core.annotation.Order;
6
 import org.springframework.core.annotation.Order;
8
-import com.alibaba.csp.sentinel.adapter.gateway.sc.SentinelGatewayFilter;
9
 import com.ruoyi.gateway.handler.SentinelFallbackHandler;
7
 import com.ruoyi.gateway.handler.SentinelFallbackHandler;
10
 
8
 
11
 /**
9
 /**
@@ -22,11 +20,4 @@ public class GatewayConfig
22
     {
20
     {
23
         return new SentinelFallbackHandler();
21
         return new SentinelFallbackHandler();
24
     }
22
     }
25
-
26
-    @Bean
27
-    @Order(-1)
28
-    public GlobalFilter sentinelGatewayFilter()
29
-    {
30
-        return new SentinelGatewayFilter();
31
-    }
32
 }
23
 }

+ 2 - 2
ruoyi-modules/ruoyi-gen/src/main/java/com/ruoyi/gen/RuoYiGenApplication.java

@@ -1,7 +1,7 @@
1
 package com.ruoyi.gen;
1
 package com.ruoyi.gen;
2
 
2
 
3
 import org.springframework.boot.SpringApplication;
3
 import org.springframework.boot.SpringApplication;
4
-import org.springframework.cloud.client.SpringCloudApplication;
4
+import org.springframework.boot.autoconfigure.SpringBootApplication;
5
 import com.ruoyi.common.security.annotation.EnableCustomConfig;
5
 import com.ruoyi.common.security.annotation.EnableCustomConfig;
6
 import com.ruoyi.common.security.annotation.EnableRyFeignClients;
6
 import com.ruoyi.common.security.annotation.EnableRyFeignClients;
7
 import com.ruoyi.common.swagger.annotation.EnableCustomSwagger2;
7
 import com.ruoyi.common.swagger.annotation.EnableCustomSwagger2;
@@ -14,7 +14,7 @@ import com.ruoyi.common.swagger.annotation.EnableCustomSwagger2;
14
 @EnableCustomConfig
14
 @EnableCustomConfig
15
 @EnableCustomSwagger2   
15
 @EnableCustomSwagger2   
16
 @EnableRyFeignClients
16
 @EnableRyFeignClients
17
-@SpringCloudApplication
17
+@SpringBootApplication
18
 public class RuoYiGenApplication
18
 public class RuoYiGenApplication
19
 {
19
 {
20
     public static void main(String[] args)
20
     public static void main(String[] args)

+ 2 - 2
ruoyi-modules/ruoyi-job/src/main/java/com/ruoyi/job/RuoYiJobApplication.java

@@ -1,7 +1,7 @@
1
 package com.ruoyi.job;
1
 package com.ruoyi.job;
2
 
2
 
3
 import org.springframework.boot.SpringApplication;
3
 import org.springframework.boot.SpringApplication;
4
-import org.springframework.cloud.client.SpringCloudApplication;
4
+import org.springframework.boot.autoconfigure.SpringBootApplication;
5
 import com.ruoyi.common.security.annotation.EnableCustomConfig;
5
 import com.ruoyi.common.security.annotation.EnableCustomConfig;
6
 import com.ruoyi.common.security.annotation.EnableRyFeignClients;
6
 import com.ruoyi.common.security.annotation.EnableRyFeignClients;
7
 import com.ruoyi.common.swagger.annotation.EnableCustomSwagger2;
7
 import com.ruoyi.common.swagger.annotation.EnableCustomSwagger2;
@@ -14,7 +14,7 @@ import com.ruoyi.common.swagger.annotation.EnableCustomSwagger2;
14
 @EnableCustomConfig
14
 @EnableCustomConfig
15
 @EnableCustomSwagger2   
15
 @EnableCustomSwagger2   
16
 @EnableRyFeignClients
16
 @EnableRyFeignClients
17
-@SpringCloudApplication
17
+@SpringBootApplication
18
 public class RuoYiJobApplication
18
 public class RuoYiJobApplication
19
 {
19
 {
20
     public static void main(String[] args)
20
     public static void main(String[] args)

+ 2 - 2
ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/RuoYiSystemApplication.java

@@ -1,7 +1,7 @@
1
 package com.ruoyi.system;
1
 package com.ruoyi.system;
2
 
2
 
3
 import org.springframework.boot.SpringApplication;
3
 import org.springframework.boot.SpringApplication;
4
-import org.springframework.cloud.client.SpringCloudApplication;
4
+import org.springframework.boot.autoconfigure.SpringBootApplication;
5
 import com.ruoyi.common.security.annotation.EnableCustomConfig;
5
 import com.ruoyi.common.security.annotation.EnableCustomConfig;
6
 import com.ruoyi.common.security.annotation.EnableRyFeignClients;
6
 import com.ruoyi.common.security.annotation.EnableRyFeignClients;
7
 import com.ruoyi.common.swagger.annotation.EnableCustomSwagger2;
7
 import com.ruoyi.common.swagger.annotation.EnableCustomSwagger2;
@@ -14,7 +14,7 @@ import com.ruoyi.common.swagger.annotation.EnableCustomSwagger2;
14
 @EnableCustomConfig
14
 @EnableCustomConfig
15
 @EnableCustomSwagger2
15
 @EnableCustomSwagger2
16
 @EnableRyFeignClients
16
 @EnableRyFeignClients
17
-@SpringCloudApplication
17
+@SpringBootApplication
18
 public class RuoYiSystemApplication
18
 public class RuoYiSystemApplication
19
 {
19
 {
20
     public static void main(String[] args)
20
     public static void main(String[] args)

+ 3 - 3
ruoyi-visual/ruoyi-monitor/src/main/java/com/ruoyi/modules/monitor/RuoYiMonitorApplication.java

@@ -1,8 +1,8 @@
1
 package com.ruoyi.modules.monitor;
1
 package com.ruoyi.modules.monitor;
2
 
2
 
3
-import de.codecentric.boot.admin.server.config.EnableAdminServer;
4
 import org.springframework.boot.SpringApplication;
3
 import org.springframework.boot.SpringApplication;
5
-import org.springframework.cloud.client.SpringCloudApplication;
4
+import org.springframework.boot.autoconfigure.SpringBootApplication;
5
+import de.codecentric.boot.admin.server.config.EnableAdminServer;
6
 
6
 
7
 /**
7
 /**
8
  * 监控中心
8
  * 监控中心
@@ -10,7 +10,7 @@ import org.springframework.cloud.client.SpringCloudApplication;
10
  * @author ruoyi
10
  * @author ruoyi
11
  */
11
  */
12
 @EnableAdminServer
12
 @EnableAdminServer
13
-@SpringCloudApplication
13
+@SpringBootApplication
14
 public class RuoYiMonitorApplication
14
 public class RuoYiMonitorApplication
15
 {
15
 {
16
     public static void main(String[] args)
16
     public static void main(String[] args)