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.0KEY: 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

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微服务实践》-赵计刚

lombok标签_微服务之:springboot入门、Swagger、Lombok使用相关推荐

  1. 微服务笔记:第一章_微服务简介|Eureka注册中心|Nacos注册中心|Nacos配置管理|Feign|Gateway服务网关

    微服务笔记:第一章_微服务简介|Eureka注册中心|Nacos注册中心|Nacos配置管理|Feign|Gateway服务网关 1. 微服务简介 1.1 服务架构演变 1.2 SpringCloud ...

  2. 【Kubernetes 企业项目实战】07、最新一代微服务网格 Istio 入门到企业实战(下)

    目录 一.istio 核心资源解读 1.1 Gateway 总结: 1.2 VirtualService 1.2.1 VirtualService 主要由以下部分组成 1.2.2 virtualser ...

  3. 微服务和VUE入门教程(26): 微服务之turbine

    微服务和VUE入门教程(26): 微服务之turbine 微服务和VUE入门教程(0): 着手搭建项目 微服务和VUE入门教程(1): 搭建前端登录界面 微服务和VUE入门教程(2): 注册中心 微服 ...

  4. 手把手0基础项目实战(一)——教你搭建一套可自动化构建的微服务框架(SpringBoot+Dubbo+Docker+Jenkins)......

    手把手0基础项目实战(一)--教你搭建一套可自动化构建的微服务框架(SpringBoot+Dubbo+Docker+Jenkins)... 原文: 手把手0基础项目实战(一)--教你搭建一套可自动化构 ...

  5. docker容器 eureka 集成_微服务:基于 Docker 的微服务架构之分布式企业级实践参考...

    编者按:本文分享自CSDN技术博客,作者为 FlyWine,所有权归原著者.若有不妥,联系本头条号以做必要处理. 目录 Microservice 和 Docker 服务发现模式 客户端发现模式 Net ...

  6. spring-cloud Finchley.SR2版本 升级微服务到springboot 2.0

    2019独角兽企业重金招聘Python工程师标准>>> 读书笔记 spring-cloud Finchley.SR2版本 升级微服务到springboot 2.0 贴码云 https ...

  7. go web框架_golang微服务框架go-micro 入门笔记2.2 micro工具之微应用利器micro web

    micro web micro 功能非常强大,本文将详细阐述micro web 命令行的功能 阅读本文前你可能需要进行如下知识储备 golang分布式微服务框架go-micro 入门笔记1:搭建go- ...

  8. mqtt发布json数据_微服务实战:从架构到发布(一)

    引言:"微服务"是当前软件架构领域非常热门的词汇,能找到很多关于微服务的定义.准则,以及如何从微服务中获益的文章,在企业的实践中去应用"微服务"的资源却很少.本 ...

  9. 微服务应用开发入门④服务网关

    简述 相信通过微服务应用开发入门①web端架构演进的阅读,大家已经知道服务网关是干嘛的: 一般来说服务网关会做以下几件事情: 路由:路由是API网关很核心的模块功能,此模块实现根据请求,锁定目标微服务 ...

最新文章

  1. ***帮兄设计实战分析
  2. python2.7怎么升级python3_如何将Mac OS X10.9下的Python2.7升级到最新的Python3.3
  3. JQuery 绑定select标签的onchange事件
  4. POS机移动刷卡机自适应网站源码 dedecms织梦模板
  5. 神经网络特征图计算_GNNFiLM:基于线性特征调制的图神经网络
  6. mysql中的found_MySQL 中的 FOUND_ROWS() 与 ROW_COUNT() 函数
  7. FRR BGP 协议分析 3 --- FSM 状态机
  8. atitit.提升稳定性---hibernate 增加重试retry 机制解决数据库连接关闭
  9. 图像处理软件ImageJ介绍与下载链接
  10. 25.redux中间件redux-thunk和redux-saga
  11. weblogic 14c 的下载和安装
  12. 如何给刚刚出厂的服务器配置IP地址(华为RH2288 v3)
  13. MogaFX外汇储备与经济危机
  14. 《Kotlin实战》读书笔记第二章
  15. 在qt实现手机通讯录系统_通讯录管理系统的设计与实现(QT,SQlite)
  16. torch.sigmoid()、torch.nn.Sigmoid()和torch.nn.functional.sigmoid()三者之间的区别
  17. 漫谈TCP拥塞控制算法(2)
  18. 【渝粤题库】陕西师范大学200741概率论与数理统计作业(高起本、专升本)
  19. 微信小程序怎么连接数据库?
  20. AQS explanation

热门文章

  1. 浅析Windows计算机中丢失SETUPAPI.dll的问题
  2. 类似于QQ游戏百万人同时在线的服务器架构实现
  3. js面向对象的程序设计 --- 中篇(创建对象) 之 原型模式
  4. linux文件管理 - 系统文件属性
  5. Oracle数据库执行Sql脚本
  6. 学习http only cookie以及javascript创建cookie的方式
  7. ImageMagick命令执行漏洞(CVE-2016–3714)利用及测试
  8. delphi连接SQL2005做的数据库管理系统的一些部署问题
  9. nginx-一个端口代理多个服务
  10. 意外断电后,Zabbix_proxy 重启无任何相关进程,如何处理?