非maven使用swagger_微服务之:springboot入门、Swagger、Lombok使用

d82486ab6a84c8a1126fd57eb1009edb.png

0x01、第一个Springboot程序

项目启动注解:@springbootApplication

@SpringBootApplication
public class HellobootApplication {

    public static void main(String[] args) {
        SpringApplication.run(HellobootApplication.class, args);
        System.out.println("Hello");
    }

}

SpringBootApplication注解包含三个重要注解:

  • SpringBootConfiguration:是一个复合注解,重要注解是Configuration
  • EnableAutoConfiguration: 用于 启动服务的自动配置功能
  • ComponentScan:用于扫描类,类似spring中的标签
@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Inherited
@SpringBootConfiguration
@EnableAutoConfiguration
@ComponentScan(
    excludeFilters = {@Filter(
    type = FilterType.CUSTOM,
    classes = {TypeExcludeFilter.class}
), @Filter(
    type = FilterType.CUSTOM,
    classes = {AutoConfigurationExcludeFilter.class}
)}
)
public @interface SpringBootApplication {
    @AliasFor(
        annotation = EnableAutoConfiguration.class
    )
    Class<?>[] exclude() default {};

    @AliasFor(
        annotation = EnableAutoConfiguration.class
    )
    String[] excludeName() default {};

    @AliasFor(
        annotation = ComponentScan.class,
        attribute = "basePackages"
    )
    String[] scanBasePackages() default {};

    @AliasFor(
        annotation = ComponentScan.class,
        attribute = "basePackageClasses"
    )
    Class<?>[] scanBasePackageClasses() default {};
}

运行springboot项目

首先需要配置好maven环境,配置好环境变量:

KEY:MAVEN_HOME
VALUE:D:apache-maven-3.6.0

KEY: PATH
VALUE:%MAVEN_HOME%bin
  • 第一种使用mvn:instal打成jar包,使用java -jar xxxx.jar运行,该方式一般用于线上部署服务。
  • 第二种使用mvn spring-boot:run,一般用于本地调试使用

验证Maven依赖树命令

mvn dependency:tree

0x02、微服务文档输出

Swagger概述

Swagger是一款用于设计、构建、文档化并且执行API的框架;有利于前后端分离,测试时可以通过在页面输入url来访问control。

如何使用Swagger

搭建项目框架

  • 引入jar包:swagger-ui和swagger2
<!--swagger-ui-->
<dependency>
    <groupId>io.springfox</groupId>
    <artifactId>springfox-swagger-ui</artifactId>
    <version>2.5.0</version>
</dependency>

<!--swagger2-->
<dependency>
    <groupId>io.springfox</groupId>
    <artifactId>springfox-swagger2</artifactId>
    <version>2.5.0</version>
</dependency>
  • 在Model和Control中使用注解
@ApiModel("用户模型")
@AllArgsConstructor
@Getter
public class User {

    @ApiModelProperty("用户id")
    private int id;

    @ApiModelProperty("用户姓名")
    private String name;

    @ApiModelProperty("用户密码")
    private String password;
}
@Api("User相关api")
@RestController
@RequestMapping("/user")
public class UserController {

    @RequestMapping(value = "/sayHello", method = RequestMethod.GET)
    public String sayHello() {
        return "hello, boy!";
    }

    @ApiOperation("根据id获取信息")
    @ApiImplicitParams({@ApiImplicitParam(paramType = "query", name = "id", dataType = "int",
            required = true, value = "用户的id", defaultValue = "1")})
    @ApiResponses({@ApiResponse(code = 400, message = "请求参数没填好"),
            @ApiResponse(code = 404, message = "请求路径不正确")})
    @RequestMapping(value = "/getUserInfo", method = RequestMethod.GET)
    public User getUserInfo(@RequestParam("id") int id) {
        if (id == 1) {
            return new User(1, "rose", "123456");
        }
        return new User(2, "jack", "123456");
    }
}

Swagger常用注解介绍:

  • @Api:通常用来为一个Controller类做注释,说明controller职能
  • @ApiOperation:通常用来为一个接口做注释,说明接口职能
  • @ApiImplicitParams:通常用来包含接口的一组参数注解
  • @ApiImplicitParam:用在@ApiImplicitParams注解中,说明参数详细。该注解包含以下选项
  • paramType:参数所放置的位置,包含query,header,path,body,form;query域中的值需要使用@RequestParam获取;header域中的值需要使用@RequestHeader获取;path域中的值需要使用@PathVariable获取;body域中的值需要使用@RequestBody获取,否则可能出错
  • name:参数名
  • dataType:参数类型
  • required:参数是否必传
  • value:参数的值
  • defaultValue:参数的默认值
  • @ApiResponses:用于包含接口的一组响应。
  • @ApiResponse:用在注解@ApiResponses中,表达一个错误的响应信息。
  • code:即httpCode数字,例如:404
  • message:信息,如"请求参数不正确"

启动项目,打开Swagger

  • 启动项目
  • 浏览器输入:http://localhost:8080/swagger-ui.html

b01be5248ea7bc59f530f426c86f0bb2.png

lombok使用

  • idea安装lombok插件:plugin --> 搜索lombok plugin --> install
  • 引入jar包
<!--lombok-->
<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
    <version>1.16.8</version>
</dependency>
  • Lombok常用注解
  • @Getter:用于生成getter方法
  • @Setter:用于生成Setter方法
  • @AllArgsConstructor:用于生成全参构造方法
  • @NoArgsConstructor:生成无参构造方法
  • @Builder:用于将类改造成builder模式,用于类、方法或构造器上
  • @Data:是一个复合注解,默认生成无参构造、所有属性getter、所有非final属性setter、重写toString、equals和hashcode方法

@builder简单使用:

@ApiModel("用户模型")
@AllArgsConstructor
@Getter
@Builder
public class User {

    @ApiModelProperty("用户id")
    private int id;

    @ApiModelProperty("用户姓名")
    private String name;

    @ApiModelProperty("用户密码")
    private String password;
}
User user = User.builder().id(1).name("jy").password("123").build();

0x03、参考链接

《Java微服务实践》-赵计刚

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值