• springbootswagger


    添加pom.xml依赖

    <dependency>
                <groupId>io.springfox</groupId>
                <artifactId>springfox-boot-starter</artifactId>
                <version>3.0.0</version>
            </dependency>
    

    配置application.yml

    #springboot版本搞需要配置它
    spring.mvc.pathmatch.matching-strategy=ant_path_matcher
    
    #-dev.yml
    server:
      port: 8081
    #Swagger 
    #到时候在config类里定义
    #@Value("${swagger.enabled}")//获取当前环境ymlswagger.enabled的值付给flag1
    #    boolean flag1;  选择是否开启swagger
    swagger:
      enabled: true
    #-prod.yml
    server:
      port: 8082
    #Swagger lock
    swagger:
      enabled: false
    

    config文件

    @Configuration
    //@EnableSwagger2//开启 Swagger2 网站swagger-ui/index.html
    @EnableOpenApi//开启 Swagger
    /*
    Swagger的bean实例Docket
     */
    //@Profile({"dev","test"}) //判断是否是在dev ,test环境下 ,是开启 Swagger  不需要.enable()  在dev所以下面的类
    
    public class SwaggerCnofig {
    
        //.enable()配置是否启动swagger false不启动,不能在浏览器访问。默认true
        @Value("${swagger.enabled}")//获取当前环境ymlswagger.enabled的值付给flag1
        boolean flag1;
        //多个Docket  配置多个分组  自己的组配置自己的信息
        @Bean
        public Docket docket2(Environment environment){
            return new Docket(DocumentationType.SWAGGER_2)
                    .groupName("A2");
        }
        @Bean
        public Docket docket3(Environment environment){
            return new Docket(DocumentationType.SWAGGER_2)
                    .groupName("B3");
        }
        @Bean
        public Docket docket4(Environment environment){
            return new Docket(DocumentationType.SWAGGER_2)
                    .groupName("C4");
        }
    
        //配置swagger的docketd的bean实例
        @Bean
        public Docket docket(Environment environment){
            //获取项目环境 判断是否开启swagger
            //设置要显示的swagger环境  监听dev,test环境
            Profiles profiles=Profiles.of("dev","test");
            //获得一个激活的文件getActiveProfiles
            //监听一个对象getDefaultProfiles
            //?3.0版不用再docket中设置,properties中设置了profile就可以了
            //2.x版用environment.acceptsProfiles这个判断是否处在自己设定的环境当中
            //Boolean b=environment.acceptsProfiles(环境监听变量)
            Boolean flag=environment.acceptsProfiles(profiles);
            //environment.getDefaultProfiles();
    
            return new Docket(DocumentationType.SWAGGER_2)
                    .apiInfo(apiInfo())//这个是下面我们自己写的
    
                    .groupName("hello,zll!")
    
                    .enable(flag1)//配置是否启动swagger false不启动,不能在浏览器访问。默认true
                    .select() //select().apis .build();这是一套
                    //RequestHandlerSelectors配置要扫描接口的方式
                    // basePackage基于某个包去扫描("com.zll.swagger.controller")
                    //any()扫描全部
                    //none()不扫描
                    //withClassAnnotation()扫描类上的注解 参数是一个注解的反射对象(getMapping.class)
                    //withMethodAnnotation()扫描方法上的注解(GetMapping.class)
                    //withClassAnnotation(RestController.class)只会去扫描类上有RestController这样的类来生成接口
                    .apis(RequestHandlerSelectors.basePackage("com.zll.swagger.controller"))
                    //paths()过滤什么路径 ant路径  差不多是过滤除这以外的
                    //.paths(PathSelectors.ant("/zll/**"))//只扫描带有zll下的接口请求
                    .build();
        }
    
        //配置swagger信息=》需要apiInfo类
        private ApiInfo apiInfo(){
            //作者信息
            Contact DEFAULT_CONTACT = new Contact("今珂", "http://baidu,com ","1664086110@qq.com");
            //标签
            return  new ApiInfo("今珂 的Api Swagger文档",
                    "描述:hello,今珂!!!",
                    "版本:1.0", "http://baidu,com",
                    DEFAULT_CONTACT, "Apache 2.0",
                    "http://www.apache.org/licenses/LICENSE-2.0",
                    new ArrayList()
            );
        }
    }
    

    控制类controller

    
    @Api(tags="注释:Hello控制类",description = "描述")//tags可以多个值 tags = {"列表1","列表2"}
    @RestController
    public class HelloController {
    
        @PostMapping(value="/hello")//@RequestMapping=》get post都可以使用
        public String hello(){
            return "zll,hello!";
        }
    
    
        //只要我们的接口中,返回值中存在实体类,他就会被扫描到
        @GetMapping(value="/user")//@RequestMapping=》get post都可以使用
        public User user(){
            return new User();
        }
    
        @ApiOperation("接口:Hello2方法")//是用在方法上的
        @GetMapping("/hello2")
        public String hello2(@ApiParam("用户名") String username){
            String zll;
            return "hello"+username;
        }
    
        @ApiOperation("接口:Post测试类")//是用在方法上的
        @PostMapping("/postt")
        public User postt(@ApiParam("User类") User user){ //使用User实体类需要成员为private 否则报错=》Unable to scan documentation context 组名
          // int i=5/0;//除0 swagger页面测试接口会报500错误
            return user;
        }
    
    }
    

    实体类

    //需要去Controller中设置接口才可以让swagger扫描
    @Data//get set方法
    @ApiModel("@ApiModel文档注释:用户实体类 User")//使用在类上,表示对类进行说明 -description=( 描述)
    public class User {
        @ApiModelProperty("使用在方法,字段上注释:用户名")
        /*
        value–字段说明
        name–重写属性名字
        dataType–重写属性类型
        required–是否必填
        example–举例说明
        hidden–隐藏
        */
        private  String name; //public不需要get set方法就可以扫描到
        @ApiModelProperty(value = "密码")
        private String password; //private 需要加get set方法才可以被扫描到
    
        /*@ApiParam()去控制类的接口方法里的参数字段注释
    使用在方法上或者参数上,字段说明;表示对参数的添加元数据(说明或是否必填等)
    name–参数名
    value–参数说明
    required–是否必填
     */
    
        /*
    @ApiOperation() 去控制类的接口方法上注释
    使用于在方法上,表示一个http请求的操作
    源码中属性太多,记几个比较常用
    value用于方法描述
    notes用于提示内容
    tags可以重新分组(视情况而用)
     */
    
    }
    
  • 相关阅读:
    (OK) 从do_register_framebuffer开始的函数调用关系
    Linux内核基础--事件通知链(notifier chain)
    Java EE即将死去,毫无疑问!- Docker & 微服务 & DevOps
    GUI显示系统之SurfaceFlinger--- Gralloc与Framebuffer
    (OK) kernel create framebuffer device
    Android: 显示系统模块加载以及调用流程 HWComposer::loadFbHalModule() -> framebuffer_open()
    (OK) Android x86如何启动到图形界面&init.sh分析.md
    error: call to '__creat_missing_mode' declared with attribute error
    Android
    Android hwcomposer模块接口
  • 原文地址:https://www.cnblogs.com/zll16578/p/16114243.html
Copyright © 2020-2023  润新知