diff --git a/opsli-api/pom.xml b/opsli-api/pom.xml
index d310348c..31ee2ac7 100644
--- a/opsli-api/pom.xml
+++ b/opsli-api/pom.xml
@@ -28,37 +28,11 @@
-
-
- io.springfox
- springfox-swagger2
- 2.9.2
-
-
- io.springfox
- springfox-swagger-ui
- 2.9.2
-
com.github.xiaoymin
- swagger-bootstrap-ui
- 1.9.3
-
-
- io.springfox
- springfox-bean-validators
- 2.9.2
-
-
-
- io.swagger
- swagger-annotations
- 1.5.22
-
-
- io.swagger
- swagger-models
- 1.5.22
+ knife4j-spring-boot-starter
+
+ 2.0.5
diff --git a/opsli-api/src/main/java/org/opsli/api/conf/SpringWebMvcConfig.java b/opsli-api/src/main/java/org/opsli/api/conf/SpringWebMvcConfig.java
index d2248d97..a9e4edcb 100644
--- a/opsli-api/src/main/java/org/opsli/api/conf/SpringWebMvcConfig.java
+++ b/opsli-api/src/main/java/org/opsli/api/conf/SpringWebMvcConfig.java
@@ -1,22 +1,11 @@
package org.opsli.api.conf;
-import com.github.xiaoymin.swaggerbootstrapui.annotations.EnableSwaggerBootstrapUI;
-import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.opsli.api.conf.prop.ApiPathProperties;
import org.opsli.common.annotation.ApiRestController;
-import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.PathMatchConfigurer;
-import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
-import springfox.documentation.builders.ApiInfoBuilder;
-import springfox.documentation.builders.PathSelectors;
-import springfox.documentation.builders.RequestHandlerSelectors;
-import springfox.documentation.service.ApiInfo;
-import springfox.documentation.spi.DocumentationType;
-import springfox.documentation.spring.web.plugins.Docket;
-import springfox.documentation.swagger2.annotations.EnableSwagger2;
import javax.annotation.Resource;
@@ -26,73 +15,20 @@ import javax.annotation.Resource;
*/
@Slf4j
@Configuration
-@EnableSwagger2
-@EnableSwaggerBootstrapUI
public class SpringWebMvcConfig implements WebMvcConfigurer {
@Resource
private ApiPathProperties apiPathProperties;
+ /**
+ * 配置 ApiRestController 生效
+ * @param configurer
+ */
@Override
public void configurePathMatch(PathMatchConfigurer configurer) {
configurer
.addPathPrefix(apiPathProperties.getGlobalPrefix(),c -> c.isAnnotationPresent(ApiRestController.class));
}
- // ========================= Swagger =========================
-
- /**
- *
- * 显示swagger-ui.html文档展示页,还必须注入swagger资源:
- *
- * @param registry
- */
- @Override
- public void addResourceHandlers(ResourceHandlerRegistry registry) {
- registry.addResourceHandler("swagger-ui.html").addResourceLocations("classpath:/META-INF/resources/");
- registry.addResourceHandler("doc.html").addResourceLocations("classpath:/META-INF/resources/");
- registry.addResourceHandler("/webjars/**").addResourceLocations("classpath:/META-INF/resources/webjars/");
- }
-
- /**
- * swagger2的配置文件,这里可以配置swagger2的一些基本的内容,比如扫描的包等等
- *
- * @return Docket
- */
- @Bean
- public Docket createRestApi() {
- return new Docket(DocumentationType.SWAGGER_2)
- .apiInfo(apiInfo())
- .select()
- //此包路径下的类,才生成接口文档
- .apis(RequestHandlerSelectors.basePackage("org.opsli"))
- //加了ApiOperation注解的类,才生成接口文档
- .apis(RequestHandlerSelectors.withMethodAnnotation(ApiOperation.class))
- .paths(PathSelectors.any())
- .build();
- }
-
-
-
- /**
- * api文档的详细信息函数,注意这里的注解引用的是哪个
- *
- * @return
- */
- private ApiInfo apiInfo() {
- return new ApiInfoBuilder()
- // //大标题
- .title("Opsli-Boot 后台服务API接口文档")
- // 版本号
- .version("1.0")
-// .termsOfServiceUrl("NO terms of service")
- // 描述
- .description("后台API接口")
- // 作者
- .contact("Parker")
- .license("The Apache License, Version 2.0")
- .licenseUrl("http://www.apache.org/licenses/LICENSE-2.0.html")
- .build();
- }
}
diff --git a/opsli-base-support/opsli-common/src/main/java/org/opsli/common/constants/TokenConstants.java b/opsli-base-support/opsli-common/src/main/java/org/opsli/common/constants/TokenConstants.java
new file mode 100644
index 00000000..b49999c5
--- /dev/null
+++ b/opsli-base-support/opsli-common/src/main/java/org/opsli/common/constants/TokenConstants.java
@@ -0,0 +1,15 @@
+package org.opsli.common.constants;
+
+/**
+ * @BelongsProject: opsli-boot
+ * @BelongsPackage: org.opsli.common.constants
+ * @Author: Parker
+ * @CreateTime: 2020-09-16 17:42
+ * @Description: Token
+ */
+public interface TokenConstants {
+
+ /** ACCESS_TOKEN */
+ String ACCESS_TOKEN = "token";
+
+}
diff --git a/opsli-base-support/opsli-core/src/main/java/org/opsli/core/conf/SwaggerConfig.java b/opsli-base-support/opsli-core/src/main/java/org/opsli/core/conf/SwaggerConfig.java
new file mode 100644
index 00000000..7b97fc40
--- /dev/null
+++ b/opsli-base-support/opsli-core/src/main/java/org/opsli/core/conf/SwaggerConfig.java
@@ -0,0 +1,127 @@
+package org.opsli.core.conf;
+
+import com.fasterxml.classmate.TypeResolver;
+import com.github.xiaoymin.knife4j.spring.annotations.EnableKnife4j;
+import com.google.common.collect.Lists;
+import io.swagger.annotations.ApiOperation;
+import org.opsli.common.constants.TokenConstants;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.context.annotation.Import;
+import springfox.bean.validators.configuration.BeanValidatorPluginsConfiguration;
+import springfox.documentation.builders.ApiInfoBuilder;
+import springfox.documentation.builders.ParameterBuilder;
+import springfox.documentation.builders.PathSelectors;
+import springfox.documentation.builders.RequestHandlerSelectors;
+import springfox.documentation.schema.ModelRef;
+import springfox.documentation.service.*;
+import springfox.documentation.spi.DocumentationType;
+import springfox.documentation.spi.service.contexts.SecurityContext;
+import springfox.documentation.spring.web.plugins.Docket;
+import springfox.documentation.swagger2.annotations.EnableSwagger2;
+
+import java.util.List;
+
+@Configuration
+@EnableSwagger2
+@EnableKnife4j
+@Import(BeanValidatorPluginsConfiguration.class)
+public class SwaggerConfig {
+
+ private final TypeResolver typeResolver;
+
+ @Autowired
+ public SwaggerConfig(TypeResolver typeResolver) {
+ this.typeResolver = typeResolver;
+ }
+
+ // ========================= Swagger =========================
+
+ /**
+ * swagger2的配置文件,这里可以配置swagger2的一些基本的内容,比如扫描的包等等
+ *
+ * @return Docket
+ */
+ @Bean
+ public Docket createRestApi() {
+ return new Docket(DocumentationType.SWAGGER_2)
+ .apiInfo(apiInfo())
+ .groupName("opsli 2.X")
+ .select()
+ //此包路径下的类,才生成接口文档
+ .apis(RequestHandlerSelectors.basePackage("org.opsli"))
+ //加了ApiOperation注解的类,才生成接口文档
+ .apis(RequestHandlerSelectors.withMethodAnnotation(ApiOperation.class))
+ .paths(PathSelectors.any())
+ .build()
+ .securityContexts(Lists.newArrayList(securityContext()))
+ .securitySchemes(Lists.newArrayList(apiKey()));
+
+ }
+
+
+ /**
+ * api文档的详细信息函数,注意这里的注解引用的是哪个
+ *
+ * @return
+ */
+ private ApiInfo apiInfo() {
+ return new ApiInfoBuilder()
+ // //大标题
+ .title("Opsli-Boot 后台服务API接口文档")
+ // 版本号
+ .version("1.0")
+ // 描述
+ .description("后台API接口")
+ // 作者
+ .contact("Parker")
+ .license("The Apache License, Version 2.0")
+ .licenseUrl("http://www.apache.org/licenses/LICENSE-2.0.html")
+ .build();
+ }
+
+
+ /**
+ * 安全模块
+ * @return
+ */
+ private SecurityContext securityContext() {
+ return SecurityContext.builder()
+ .securityReferences(defaultAuth())
+ .forPaths(PathSelectors.regex("/.*"))
+ .build();
+ }
+
+ /**
+ * jwt token
+ * @return
+ */
+ private List defaultToken() {
+ ParameterBuilder parameterBuilder = new ParameterBuilder();
+ List parameters= Lists.newArrayList();
+ parameterBuilder.name(TokenConstants.ACCESS_TOKEN)
+ .description("Token 令牌")
+ .modelRef(new ModelRef("String"))
+ .parameterType("header")
+ .required(false).build();
+ parameters.add(parameterBuilder.build());
+ return parameters;
+ }
+
+ /**
+ * oauth2 授权
+ * @return
+ */
+ List defaultAuth() {
+ AuthorizationScope authorizationScope = new AuthorizationScope("global", "accessEverything");
+ AuthorizationScope[] authorizationScopes = new AuthorizationScope[1];
+ authorizationScopes[0] = authorizationScope;
+ return Lists.newArrayList(new SecurityReference(TokenConstants.ACCESS_TOKEN, authorizationScopes));
+ }
+
+ private ApiKey apiKey() {
+ return new ApiKey(TokenConstants.ACCESS_TOKEN, TokenConstants.ACCESS_TOKEN, "header");
+ }
+
+}
\ No newline at end of file
diff --git a/pom.xml b/pom.xml
index 16fa89f0..259c0cae 100644
--- a/pom.xml
+++ b/pom.xml
@@ -163,6 +163,12 @@
org.springframework.boot
spring-boot-starter-actuator
+
+
+ org.springframework.boot
+ spring-boot-starter-validation
+
+