Quellcode durchsuchen

升级swagger到最新版本v3.0.0

RuoYi vor 4 Jahren
Ursprung
Commit
8722e184d6

+ 2 - 2
pom.xml

@@ -23,8 +23,8 @@
23 23
         <alibaba.nacos.version>2.0.1</alibaba.nacos.version>
24 24
         <spring-boot-admin.version>2.4.1</spring-boot-admin.version>
25 25
         <spring-boot.mybatis>2.1.4</spring-boot.mybatis>
26
-        <swagger.fox.version>2.9.2</swagger.fox.version>
27
-        <swagger.core.version>1.5.24</swagger.core.version>
26
+        <swagger.fox.version>3.0.0</swagger.fox.version>
27
+        <swagger.core.version>1.6.2</swagger.core.version>
28 28
         <tobato.version>1.26.5</tobato.version>
29 29
         <kaptcha.version>2.3.2</kaptcha.version>
30 30
         <pagehelper.boot.version>1.3.0</pagehelper.boot.version>

+ 3 - 3
ruoyi-common/ruoyi-common-swagger/pom.xml

@@ -16,19 +16,19 @@
16 16
     </description>
17 17
 
18 18
 	<dependencies>
19
-	    
19
+
20 20
         <!-- SpringBoot Web -->
21 21
         <dependency>
22 22
             <groupId>org.springframework.boot</groupId>
23 23
             <artifactId>spring-boot-starter-web</artifactId>
24 24
         </dependency>
25
-		
25
+
26 26
         <!-- Swagger -->
27 27
         <dependency>
28 28
             <groupId>io.springfox</groupId>
29 29
             <artifactId>springfox-swagger2</artifactId>
30 30
             <version>${swagger.fox.version}</version>
31 31
         </dependency>
32
-		
32
+
33 33
 	</dependencies>
34 34
 </project>

+ 14 - 14
ruoyi-common/ruoyi-common-swagger/src/main/java/com/ruoyi/common/swagger/config/SwaggerAutoConfiguration.java

@@ -3,13 +3,12 @@ package com.ruoyi.common.swagger.config;
3 3
 import java.util.ArrayList;
4 4
 import java.util.Arrays;
5 5
 import java.util.List;
6
+import java.util.function.Predicate;
6 7
 import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
7 8
 import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
8 9
 import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
9 10
 import org.springframework.context.annotation.Bean;
10 11
 import org.springframework.context.annotation.Configuration;
11
-import com.google.common.base.Predicate;
12
-import com.google.common.base.Predicates;
13 12
 import springfox.documentation.builders.ApiInfoBuilder;
14 13
 import springfox.documentation.builders.PathSelectors;
15 14
 import springfox.documentation.builders.RequestHandlerSelectors;
@@ -18,8 +17,10 @@ import springfox.documentation.service.ApiKey;
18 17
 import springfox.documentation.service.AuthorizationScope;
19 18
 import springfox.documentation.service.Contact;
20 19
 import springfox.documentation.service.SecurityReference;
20
+import springfox.documentation.service.SecurityScheme;
21 21
 import springfox.documentation.spi.DocumentationType;
22 22
 import springfox.documentation.spi.service.contexts.SecurityContext;
23
+import springfox.documentation.spring.web.plugins.ApiSelectorBuilder;
23 24
 import springfox.documentation.spring.web.plugins.Docket;
24 25
 import springfox.documentation.swagger2.annotations.EnableSwagger2;
25 26
 
@@ -60,27 +61,26 @@ public class SwaggerAutoConfiguration
60 61
         {
61 62
             swaggerProperties.getExcludePath().addAll(DEFAULT_EXCLUDE_PATH);
62 63
         }
64
+
63 65
         List<Predicate<String>> excludePath = new ArrayList<>();
64 66
         swaggerProperties.getExcludePath().forEach(path -> excludePath.add(PathSelectors.ant(path)));
65 67
 
66
-        //noinspection Guava
67
-        return new Docket(DocumentationType.SWAGGER_2)
68
-                .host(swaggerProperties.getHost())
68
+        ApiSelectorBuilder builder = new Docket(DocumentationType.SWAGGER_2).host(swaggerProperties.getHost())
69 69
                 .apiInfo(apiInfo(swaggerProperties)).select()
70
-                .apis(RequestHandlerSelectors.basePackage(swaggerProperties.getBasePackage()))
71
-                .paths(Predicates.and(Predicates.not(Predicates.or(excludePath)), Predicates.or(basePath)))
72
-                .build()
73
-                .securitySchemes(securitySchemes())
74
-                .securityContexts(securityContexts())
75
-                .pathMapping("/");
70
+                .apis(RequestHandlerSelectors.basePackage(swaggerProperties.getBasePackage()));
71
+
72
+        swaggerProperties.getBasePath().forEach(p -> builder.paths(PathSelectors.ant(p)));
73
+        swaggerProperties.getExcludePath().forEach(p -> builder.paths(PathSelectors.ant(p).negate()));
74
+
75
+        return builder.build().securitySchemes(securitySchemes()).securityContexts(securityContexts()).pathMapping("/");
76 76
     }
77 77
 
78 78
     /**
79 79
      * 安全模式,这里指定token通过Authorization头请求头传递
80 80
      */
81
-    private List<ApiKey> securitySchemes()
81
+    private List<SecurityScheme> securitySchemes()
82 82
     {
83
-        List<ApiKey> apiKeyList = new ArrayList<ApiKey>();
83
+        List<SecurityScheme> apiKeyList = new ArrayList<SecurityScheme>();
84 84
         apiKeyList.add(new ApiKey("Authorization", "Authorization", "header"));
85 85
         return apiKeyList;
86 86
     }
@@ -94,7 +94,7 @@ public class SwaggerAutoConfiguration
94 94
         securityContexts.add(
95 95
                 SecurityContext.builder()
96 96
                         .securityReferences(defaultAuth())
97
-                        .forPaths(PathSelectors.regex("^(?!auth).*$"))
97
+                        .operationSelector(o -> o.requestMappingPattern().matches("/.*"))
98 98
                         .build());
99 99
         return securityContexts;
100 100
     }

+ 22 - 0
ruoyi-common/ruoyi-common-swagger/src/main/java/com/ruoyi/common/swagger/config/SwaggerWebConfiguration.java

@@ -0,0 +1,22 @@
1
+package com.ruoyi.common.swagger.config;
2
+
3
+import org.springframework.context.annotation.Configuration;
4
+import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
5
+import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
6
+
7
+/**
8
+ * swagger 资源映射路径
9
+ * 
10
+ * @author ruoyi
11
+ */
12
+@Configuration
13
+public class SwaggerWebConfiguration implements WebMvcConfigurer
14
+{
15
+    @Override
16
+    public void addResourceHandlers(ResourceHandlerRegistry registry)
17
+    {
18
+        /** swagger-ui 地址 */
19
+        registry.addResourceHandler("/swagger-ui/**")
20
+                .addResourceLocations("classpath:/META-INF/resources/webjars/springfox-swagger-ui/");
21
+    }
22
+}

+ 2 - 1
ruoyi-common/ruoyi-common-swagger/src/main/resources/META-INF/spring.factories

@@ -1,2 +1,3 @@
1 1
 org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
2
-  com.ruoyi.common.swagger.config.SwaggerAutoConfiguration
2
+  com.ruoyi.common.swagger.config.SwaggerAutoConfiguration,\
3
+  com.ruoyi.common.swagger.config.SwaggerWebConfiguration

+ 11 - 1
ruoyi-gateway/src/main/java/com/ruoyi/gateway/config/SwaggerProvider.java

@@ -7,6 +7,8 @@ import org.springframework.cloud.gateway.config.GatewayProperties;
7 7
 import org.springframework.cloud.gateway.route.RouteLocator;
8 8
 import org.springframework.cloud.gateway.support.NameUtils;
9 9
 import org.springframework.stereotype.Component;
10
+import org.springframework.web.reactive.config.ResourceHandlerRegistry;
11
+import org.springframework.web.reactive.config.WebFluxConfigurer;
10 12
 import springfox.documentation.swagger.web.SwaggerResource;
11 13
 import springfox.documentation.swagger.web.SwaggerResourcesProvider;
12 14
 
@@ -16,7 +18,7 @@ import springfox.documentation.swagger.web.SwaggerResourcesProvider;
16 18
  * @author ruoyi
17 19
  */
18 20
 @Component
19
-public class SwaggerProvider implements SwaggerResourcesProvider
21
+public class SwaggerProvider implements SwaggerResourcesProvider, WebFluxConfigurer
20 22
 {
21 23
     /**
22 24
      * Swagger2默认的url后缀
@@ -63,4 +65,12 @@ public class SwaggerProvider implements SwaggerResourcesProvider
63 65
         swaggerResource.setSwaggerVersion("2.0");
64 66
         return swaggerResource;
65 67
     }
68
+
69
+    @Override
70
+    public void addResourceHandlers(ResourceHandlerRegistry registry)
71
+    {
72
+        /** swagger-ui 地址 */
73
+        registry.addResourceHandler("/swagger-ui/**")
74
+                .addResourceLocations("classpath:/META-INF/resources/webjars/springfox-swagger-ui/");
75
+    }
66 76
 }

+ 17 - 17
sql/ry_20210210.sql

@@ -161,23 +161,23 @@ insert into sys_menu values('2', '系统监控', '0', '2', 'monitor',          n
161 161
 insert into sys_menu values('3', '系统工具', '0', '3', 'tool',             null,   1, 0, 'M', '0', '0', '', 'tool',     'admin', sysdate(), '', null, '系统工具目录');
162 162
 insert into sys_menu values('4', '若依官网', '0', '4', 'http://ruoyi.vip', null ,  0, 0, 'M', '0', '0', '', 'guide',    'admin', sysdate(), '', null, '若依官网地址');
163 163
 -- 二级菜单
164
-insert into sys_menu values('100',  '用户管理',       '1',   '1',  'user',                                'system/user/index',       1, 0, 'C', '0', '0', 'system:user:list',        'user',          'admin', sysdate(), '', null, '用户管理菜单');
165
-insert into sys_menu values('101',  '角色管理',       '1',   '2',  'role',                                'system/role/index',       1, 0, 'C', '0', '0', 'system:role:list',        'peoples',       'admin', sysdate(), '', null, '角色管理菜单');
166
-insert into sys_menu values('102',  '菜单管理',       '1',   '3',  'menu',                                'system/menu/index',       1, 0, 'C', '0', '0', 'system:menu:list',        'tree-table',    'admin', sysdate(), '', null, '菜单管理菜单');
167
-insert into sys_menu values('103',  '部门管理',       '1',   '4',  'dept',                                'system/dept/index',       1, 0, 'C', '0', '0', 'system:dept:list',        'tree',          'admin', sysdate(), '', null, '部门管理菜单');
168
-insert into sys_menu values('104',  '岗位管理',       '1',   '5',  'post',                                'system/post/index',       1, 0, 'C', '0', '0', 'system:post:list',        'post',          'admin', sysdate(), '', null, '岗位管理菜单');
169
-insert into sys_menu values('105',  '字典管理',       '1',   '6',  'dict',                                'system/dict/index',       1, 0, 'C', '0', '0', 'system:dict:list',        'dict',          'admin', sysdate(), '', null, '字典管理菜单');
170
-insert into sys_menu values('106',  '参数设置',       '1',   '7',  'config',                              'system/config/index',     1, 0, 'C', '0', '0', 'system:config:list',      'edit',          'admin', sysdate(), '', null, '参数设置菜单');
171
-insert into sys_menu values('107',  '通知公告',       '1',   '9',  'notice',                              'system/notice/index',     1, 0, 'C', '0', '0', 'system:notice:list',      'message',       'admin', sysdate(), '', null, '通知公告菜单');
172
-insert into sys_menu values('108',  '日志管理',       '1',   '10', 'log',                                 '',                        1, 0, 'M', '0', '0', '',                        'log',           'admin', sysdate(), '', null, '日志管理菜单');
173
-insert into sys_menu values('109',  '在线用户',       '2',   '1',  'online',                              'monitor/online/index',    1, 0, 'C', '0', '0', 'monitor:online:list',     'online',        'admin', sysdate(), '', null, '在线用户菜单');
174
-insert into sys_menu values('110',  '定时任务',       '2',   '2',  'job',                                 'monitor/job/index',       1, 0, 'C', '0', '0', 'monitor:job:list',        'job',           'admin', sysdate(), '', null, '定时任务菜单');
175
-insert into sys_menu values('111',  'Sentinel控制台', '2',   '3',  'http://localhost:8718',                '',                       1, 0, 'C', '0', '0', 'monitor:sentinel:list',   'sentinel',      'admin', sysdate(), '', null, '流量控制菜单');
176
-insert into sys_menu values('112',  'Nacos控制台',    '2',   '4',  'http://localhost:8848/nacos',          '',                       1, 0, 'C', '0', '0', 'monitor:nacos:list',      'nacos',         'admin', sysdate(), '', null, '服务治理菜单');
177
-insert into sys_menu values('113',  'Admin控制台',    '2',   '5',  'http://localhost:9100/login',          '',                       1, 0, 'C', '0', '0', 'monitor:server:list',     'server',        'admin', sysdate(), '', null, '服务监控菜单');
178
-insert into sys_menu values('114',  '表单构建',       '3',   '1',  'build',                                'tool/build/index',       1, 0, 'C', '0', '0', 'tool:build:list',         'build',         'admin', sysdate(), '', null, '表单构建菜单');
179
-insert into sys_menu values('115',  '代码生成',       '3',   '2',  'gen',                                  'tool/gen/index',         1, 0, 'C', '0', '0', 'tool:gen:list',           'code',          'admin', sysdate(), '', null, '代码生成菜单');
180
-insert into sys_menu values('116',  '系统接口',       '3',   '3',  'http://localhost:8080/swagger-ui.html', '',                      1, 0, 'C', '0', '0', 'tool:swagger:list',       'swagger',       'admin', sysdate(), '', null, '系统接口菜单');
164
+insert into sys_menu values('100',  '用户管理',       '1',   '1',  'user',                                      'system/user/index',       1, 0, 'C', '0', '0', 'system:user:list',        'user',          'admin', sysdate(), '', null, '用户管理菜单');
165
+insert into sys_menu values('101',  '角色管理',       '1',   '2',  'role',                                      'system/role/index',       1, 0, 'C', '0', '0', 'system:role:list',        'peoples',       'admin', sysdate(), '', null, '角色管理菜单');
166
+insert into sys_menu values('102',  '菜单管理',       '1',   '3',  'menu',                                      'system/menu/index',       1, 0, 'C', '0', '0', 'system:menu:list',        'tree-table',    'admin', sysdate(), '', null, '菜单管理菜单');
167
+insert into sys_menu values('103',  '部门管理',       '1',   '4',  'dept',                                      'system/dept/index',       1, 0, 'C', '0', '0', 'system:dept:list',        'tree',          'admin', sysdate(), '', null, '部门管理菜单');
168
+insert into sys_menu values('104',  '岗位管理',       '1',   '5',  'post',                                      'system/post/index',       1, 0, 'C', '0', '0', 'system:post:list',        'post',          'admin', sysdate(), '', null, '岗位管理菜单');
169
+insert into sys_menu values('105',  '字典管理',       '1',   '6',  'dict',                                      'system/dict/index',       1, 0, 'C', '0', '0', 'system:dict:list',        'dict',          'admin', sysdate(), '', null, '字典管理菜单');
170
+insert into sys_menu values('106',  '参数设置',       '1',   '7',  'config',                                    'system/config/index',     1, 0, 'C', '0', '0', 'system:config:list',      'edit',          'admin', sysdate(), '', null, '参数设置菜单');
171
+insert into sys_menu values('107',  '通知公告',       '1',   '9',  'notice',                                    'system/notice/index',     1, 0, 'C', '0', '0', 'system:notice:list',      'message',       'admin', sysdate(), '', null, '通知公告菜单');
172
+insert into sys_menu values('108',  '日志管理',       '1',   '10', 'log',                                       '',                        1, 0, 'M', '0', '0', '',                        'log',           'admin', sysdate(), '', null, '日志管理菜单');
173
+insert into sys_menu values('109',  '在线用户',       '2',   '1',  'online',                                    'monitor/online/index',    1, 0, 'C', '0', '0', 'monitor:online:list',     'online',        'admin', sysdate(), '', null, '在线用户菜单');
174
+insert into sys_menu values('110',  '定时任务',       '2',   '2',  'job',                                       'monitor/job/index',       1, 0, 'C', '0', '0', 'monitor:job:list',        'job',           'admin', sysdate(), '', null, '定时任务菜单');
175
+insert into sys_menu values('111',  'Sentinel控制台', '2',   '3',  'http://localhost:8718',                      '',                       1, 0, 'C', '0', '0', 'monitor:sentinel:list',   'sentinel',      'admin', sysdate(), '', null, '流量控制菜单');
176
+insert into sys_menu values('112',  'Nacos控制台',    '2',   '4',  'http://localhost:8848/nacos',                '',                       1, 0, 'C', '0', '0', 'monitor:nacos:list',      'nacos',         'admin', sysdate(), '', null, '服务治理菜单');
177
+insert into sys_menu values('113',  'Admin控制台',    '2',   '5',  'http://localhost:9100/login',                '',                       1, 0, 'C', '0', '0', 'monitor:server:list',     'server',        'admin', sysdate(), '', null, '服务监控菜单');
178
+insert into sys_menu values('114',  '表单构建',       '3',   '1',  'build',                                      'tool/build/index',       1, 0, 'C', '0', '0', 'tool:build:list',         'build',         'admin', sysdate(), '', null, '表单构建菜单');
179
+insert into sys_menu values('115',  '代码生成',       '3',   '2',  'gen',                                        'tool/gen/index',         1, 0, 'C', '0', '0', 'tool:gen:list',           'code',          'admin', sysdate(), '', null, '代码生成菜单');
180
+insert into sys_menu values('116',  '系统接口',       '3',   '3',  'http://localhost:8080/swagger-ui/index.html', '',                      1, 0, 'C', '0', '0', 'tool:swagger:list',       'swagger',       'admin', sysdate(), '', null, '系统接口菜单');
181 181
 -- 三级菜单
182 182
 insert into sys_menu values('500',  '操作日志', '108', '1', 'operlog',    'system/operlog/index',     1, 0, 'C', '0', '0', 'system:operlog:list',     'form',          'admin', sysdate(), '', null, '操作日志菜单');
183 183
 insert into sys_menu values('501',  '登录日志', '108', '2', 'logininfor', 'system/logininfor/index',  1, 0, 'C', '0', '0', 'system:logininfor:list',  'logininfor',    'admin', sysdate(), '', null, '登录日志菜单');