From 6a70e302334c3a9936173ee84c931e531efc2451 Mon Sep 17 00:00:00 2001
From: wyl <959814898@qq.com>
Date: Sun, 6 Nov 2022 13:47:08 +0800
Subject: [PATCH] =?UTF-8?q?feat:=20aos-swagger=E6=A8=A1=E5=9D=97=E5=BC=80?=
=?UTF-8?q?=E5=8F=91=E5=AE=8C=E6=88=90?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
aos-model-test/pom.xml | 10 ++-
.../main/java/com/aos/test/Application.java | 4 ++
.../test/web/ActivityDemandController.java | 34 ++++++++++
.../test/web2/ActivityDemandController2.java | 31 +++++++++
.../src/main/resources/bootstrap.properties | 1 -
aos-swagger/pom.xml | 4 ++
.../com/aos/swagger/conf/SwaggerConfig.java | 68 +++++++++++--------
.../com/aos/swagger/enable/EnableSwagger.java | 21 +++---
8 files changed, 132 insertions(+), 41 deletions(-)
create mode 100644 aos-model-test/src/main/java/com/aos/test/web/ActivityDemandController.java
create mode 100644 aos-model-test/src/main/java/com/aos/test/web2/ActivityDemandController2.java
diff --git a/aos-model-test/pom.xml b/aos-model-test/pom.xml
index 8b8e056..20f4172 100644
--- a/aos-model-test/pom.xml
+++ b/aos-model-test/pom.xml
@@ -28,9 +28,17 @@
com.aos
- aos-nacos
+ aos-swagger
1.0-SNAPSHOT
+
+ org.springframework.boot
+ spring-boot-starter-web
+
+
+ org.springframework.boot
+ spring-boot-starter-web
+
diff --git a/aos-model-test/src/main/java/com/aos/test/Application.java b/aos-model-test/src/main/java/com/aos/test/Application.java
index d16bd78..ac7c5f7 100644
--- a/aos-model-test/src/main/java/com/aos/test/Application.java
+++ b/aos-model-test/src/main/java/com/aos/test/Application.java
@@ -1,9 +1,13 @@
package com.aos.test;
+import com.aos.swagger.enable.EnableSwagger;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.boot.context.properties.EnableConfigurationProperties;
@SpringBootApplication
+@EnableSwagger(applicationName = "test", scanPackagesPath = "com.aos.test")
+@EnableConfigurationProperties
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
diff --git a/aos-model-test/src/main/java/com/aos/test/web/ActivityDemandController.java b/aos-model-test/src/main/java/com/aos/test/web/ActivityDemandController.java
new file mode 100644
index 0000000..f458950
--- /dev/null
+++ b/aos-model-test/src/main/java/com/aos/test/web/ActivityDemandController.java
@@ -0,0 +1,34 @@
+package com.aos.test.web;
+
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.config.ConfigurableListableBeanFactory;
+import org.springframework.context.annotation.AnnotationConfigApplicationContext;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * @author: zouyang
+ * @date: 2022/6/1
+ * @description: 需求计划入口
+ */
+@RestController
+@RequestMapping("/")
+@Api(value = "ActivityDemandController", tags = "需求计划入口")
+public class ActivityDemandController {
+
+ @PostMapping("/getListPage")
+ @ApiOperation(value = "分页查询活动需求")
+ public String getListPage() {
+ return "1";
+ }
+
+ @PostMapping("/getListPage1")
+ @ApiOperation(value = "分页查询活动需求1")
+ public String getListPage1() {
+ return "2";
+ }
+
+}
diff --git a/aos-model-test/src/main/java/com/aos/test/web2/ActivityDemandController2.java b/aos-model-test/src/main/java/com/aos/test/web2/ActivityDemandController2.java
new file mode 100644
index 0000000..40ef7fb
--- /dev/null
+++ b/aos-model-test/src/main/java/com/aos/test/web2/ActivityDemandController2.java
@@ -0,0 +1,31 @@
+package com.aos.test.web2;
+
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * @author: zouyang
+ * @date: 2022/6/1
+ * @description: 需求计划入口
+ */
+@RestController
+@RequestMapping("/test")
+@Api(value = "ActivityDemandController1", tags = "需求计划入口2")
+public class ActivityDemandController2 {
+
+ @PostMapping("/getListPage2")
+ @ApiOperation(value = "分页查询活动需求2")
+ public String getListPage() {
+ return "1";
+ }
+
+ @PostMapping("/getListPage12")
+ @ApiOperation(value = "分页查询活动需求12")
+ public String getListPage1() {
+ return "2";
+ }
+
+}
diff --git a/aos-model-test/src/main/resources/bootstrap.properties b/aos-model-test/src/main/resources/bootstrap.properties
index 616b163..e12477a 100644
--- a/aos-model-test/src/main/resources/bootstrap.properties
+++ b/aos-model-test/src/main/resources/bootstrap.properties
@@ -1,3 +1,2 @@
-spring.cloud.nacos.config.server-addr=192.168.123.102:8848
spring.application.name=aos-gateway
diff --git a/aos-swagger/pom.xml b/aos-swagger/pom.xml
index 8ecb5fb..ebabf29 100644
--- a/aos-swagger/pom.xml
+++ b/aos-swagger/pom.xml
@@ -35,5 +35,9 @@
com.github.xiaoymin
knife4j-spring-ui
+
+ org.springframework.boot
+ spring-boot
+
\ No newline at end of file
diff --git a/aos-swagger/src/main/java/com/aos/swagger/conf/SwaggerConfig.java b/aos-swagger/src/main/java/com/aos/swagger/conf/SwaggerConfig.java
index d18d294..c21b43a 100644
--- a/aos-swagger/src/main/java/com/aos/swagger/conf/SwaggerConfig.java
+++ b/aos-swagger/src/main/java/com/aos/swagger/conf/SwaggerConfig.java
@@ -1,9 +1,8 @@
package com.aos.swagger.conf;
import com.aos.swagger.enable.EnableSwagger;
-import org.springframework.beans.factory.config.ConfigurableListableBeanFactory;
import org.springframework.beans.factory.support.BeanDefinitionRegistry;
-import org.springframework.context.annotation.AnnotationConfigApplicationContext;
+import org.springframework.beans.factory.support.DefaultListableBeanFactory;
import org.springframework.context.annotation.ImportBeanDefinitionRegistrar;
import org.springframework.core.type.AnnotationMetadata;
import springfox.documentation.builders.ApiInfoBuilder;
@@ -13,8 +12,6 @@ import springfox.documentation.service.ApiInfo;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
-import java.util.Arrays;
-import java.util.List;
import java.util.Map;
/**
@@ -24,48 +21,59 @@ import java.util.Map;
*/
public class SwaggerConfig implements ImportBeanDefinitionRegistrar {
+
@Override
public void registerBeanDefinitions(AnnotationMetadata annotationMetadata, BeanDefinitionRegistry beanDefinitionRegistry) {
-
- //获取EnableEcho注解的所有属性的value
+ /**
+ * 获取注解参数
+ */
Map attributes = annotationMetadata.getAnnotationAttributes(EnableSwagger.class.getName());
- //获取package属性的value
- List applicationNames = Arrays.asList((String[]) attributes.get("applicationName"));
- List scanPackagesPaths = Arrays.asList((String[]) attributes.get("scanPackagesPath"));
- int size = applicationNames.size();
- for (int i = 0; i < size; i++) {
- //使用beanDefinitionRegistry对象将EchoBeanPostProcessor注入至Spring容器中
- String applicationName = applicationNames.get(i);
- String scanPackagesPath = scanPackagesPaths.get(i);
-
- beanDefinitionRegistry.registerBeanDefinition(applicationName, beanDefinitionBuilder.getBeanDefinition());
- AnnotationConfigApplicationContext annotationConfigApplicationContext = new AnnotationConfigApplicationContext();
- ConfigurableListableBeanFactory beanFactory = annotationConfigApplicationContext.getBeanFactory();
- beanFactory.registerSingleton();
- }
-
+ String applicationName = (String) attributes.get("applicationName");
+ String scanPackagesPath = (String) attributes.get("scanPackagesPath");
+ /**
+ * 生成api信息
+ */
+ Docket restApi = createRestApi(applicationName, scanPackagesPath);
+ /**
+ * 注册到bean容器
+ */
+ DefaultListableBeanFactory beanFactory = (DefaultListableBeanFactory) beanDefinitionRegistry;
+ beanFactory.registerSingleton(applicationName, restApi);
}
-
- // @Value("${spring.application.name}")
-// private String applicationName;
-//
- public Docket createRestApi(String applicationName) {
+ /**
+ * 审查个好难过swagger对象
+ *
+ * @param applicationName
+ * @param packagePath
+ * @return springfox.documentation.spring.web.plugins.Docket
+ * @Date 2022/11/6
+ * @Author wangyl
+ */
+ private Docket createRestApi(String applicationName, String packagePath) {
return new Docket(DocumentationType.SWAGGER_2)
.apiInfo(apiInfo(applicationName))
.groupName(applicationName)
.select()
- .apis(RequestHandlerSelectors.basePackage("com.asura"))
+ .apis(RequestHandlerSelectors.basePackage(packagePath))
.paths(PathSelectors.any())
.build();
}
+ /**
+ * api描述西信息
+ *
+ * @param applicationName
+ * @return springfox.documentation.service.ApiInfo
+ * @Date 2022/11/6
+ * @Author wangyl
+ */
private ApiInfo apiInfo(String applicationName) {
return new ApiInfoBuilder()
- .title(applicationName + " swagger apis")
- .description("swagger-bootstrap-ui")
- .termsOfServiceUrl("")
+ .title(applicationName + "api列表")
+ .description("aos系统api")
.version("1.0")
.build();
}
+
}
diff --git a/aos-swagger/src/main/java/com/aos/swagger/enable/EnableSwagger.java b/aos-swagger/src/main/java/com/aos/swagger/enable/EnableSwagger.java
index 83673e1..4b1a438 100644
--- a/aos-swagger/src/main/java/com/aos/swagger/enable/EnableSwagger.java
+++ b/aos-swagger/src/main/java/com/aos/swagger/enable/EnableSwagger.java
@@ -2,26 +2,29 @@ package com.aos.swagger.enable;
import com.aos.swagger.conf.SwaggerConfig;
import org.springframework.context.annotation.Import;
+import springfox.documentation.swagger2.configuration.Swagger2DocumentationConfiguration;
-import java.lang.annotation.*;
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
/**
* @author: wangyl
* @date: 2022/11/4
* @description: 启动swagger的注解
*/
-@Target({ElementType.TYPE})
+@Target({ElementType.METHOD, ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
-@Documented
-@Import({SwaggerConfig.class})
+@Import({SwaggerConfig.class, Swagger2DocumentationConfiguration.class})
public @interface EnableSwagger {
/**
* swagger显示的名称
- *
- * @param
- * @return java.lang.String
- * @Date 2022/11/4
- * @Author wangyl
*/
String applicationName();
+
+ /**
+ * 包扫描路径
+ */
+ String scanPackagesPath();
}