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(); }