SpringBoot
SpringBoot
[!tip] 本文简要说明
- 1)、spring boot的helloworld项目构建
- 2)、postman进行接口调试
- 3)、集成lombok,免去get、set函数的编写,避免后续增补字段没及时同步的bug生成
- 4)、集成swagger2和swagger2-ui,简化postman的接口调试及接口发布工作
附:工具包一览
G:. ├─PC端开发工
注:idea来源于gg搜索,自测这个有效 https://www.jb51.net/softs/543007.html?pc
一、HelloWorld项目
1、IDEA创建项目并测试
- 新建项目选择Spring Initalizr,勾选spring web依赖,
<!-- pom文件中的parent继承来自boot -->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.7.0</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<dependencies>
<!-- 这里是上面勾选了spring web的默认生成 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
2)maven的依赖因网速问题可选择阿里云镜像加速,具体操作,请翻看java基础文档中的设置
3)添加测试程序,进行web访问
package com.example.springwebdemo.controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class TestController {
@GetMapping("/test")
public String test(){
return "hello spring boot";
}
}
二、postman进行接口调试
本文参考了油管的介绍,How to add Swagger to Spring Boot - Brain Bytes - YouTube
更多接口调试工具,参考这里: 这些年我用过的API文档工具,个个是精品! - 知乎 (zhihu.com)
1、postman测试test接口
==注意:==这里因为使用的是无参数的helloworld接口,只需选择get方法,一般都能出结果!
2、项目添加完整的get、post方法,方便测试
1)、添加bean
注:这里用了lombok,避免手写get/set的麻烦和bug,实际后台还是有这代码,具体lombok使用参看下面的章节,这里不赘述
package com.example.springwebdemo.controller; import lombok.Data; @Data public class Contact { private String id; private String name; private String phone; }
2)、添加controller
注:这里有三个接口,分别是post提交bean数据到内存中,get/取得所有数据,get{id}取得单个数据
package com.example.springwebdemo.controller;
import org.springframework.web.bind.annotation.*;
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.ConcurrentMap;
/**
* @className: TestController
* @description: srping boot test
* @author: eric 4575252@gmail.com
* @date: 5/25/2022 3:56 PM
**/
@RestController
@RequestMapping("/api")
public class AddressBookResource {
ConcurrentMap<String, Contact> contacts = new ConcurrentHashMap<>();
/***
* @description: springboot Test
* @return: java.lang.String
* @author: eric 4575252@gmail.com
* @date: 2022-05-25, Wed, 15:58
*/
@GetMapping("/{id}")
public Contact getContact(@PathVariable String id){
return contacts.get(id);
}
@GetMapping("/")
public List<Contact> getAllContacts(){
return new ArrayList<Contact>(contacts.values());
}
@PostMapping("/")
public Contact addContact(@RequestBody Contact contact){
contacts.put(contact.getId(),contact);
return contact;
}
}
- 3)、pm测试post接口进行数据提交
注意:post提交因根据当前json格式所需,调整head,这里有两种调整方式,如下
效果如下:
4)、pm测试getAll接口取得所有数据(这个比较简单,注意下选的是GET,路径尾部要有/)
5)、pm测试get单接口取得单个数据(效果同上,主要是url有些差异,要带上string ID)
3、集成lombok
为啥要引入 lombok
仅五个字符 (*@*Data) 就可以替换数百行代码从而产生干净,简洁且易于维护的 Java 类。
- *@*Setter :注解在类或字段,注解在类时为所有字段生成 setter 方法,注解在字段上时只为该字段生成 setter 方法。
- *@*Getter :使用方法同上,区别在于生成的是 getter 方法。
- *@*ToString :注解在类,添加 toString 方法。
- *@*EqualsAndHashCode:注解在类,生成 hashCode 和 equals 方法。
- *@*NoArgsConstructor:注解在类,生成无参的构造方法。
- *@*RequiredArgsConstructor:注解在类,为类中需要特殊处理的字段生成构造方法,比如 final 和被*@*NonNull注解的字段。
- *@*AllArgsConstructor:注解在类,生成包含类中所有字段的构造方法。
- *@*Data:注解在类,生成 setter/getter、equals、canEqual、hashCode、toString 方法,如为 final 属性,则不会为该属性生成 setter 方法。
- *@*Slf4j:注解在类,生成 log 变量,严格意义来说是常量。
<!-- pom依赖 -->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
- bean中要增加
@Data
的注入和引用!
package com.example.springwebdemo.controller;
import lombok.Data;
@Data
public class Contact {
private String id;
private String name;
private String phone;
}
4、集成swagger2和swagger2-ui
- 1)、集成swagger2, 版本来源mvnrepository上查询使用人数最多的2.9.2 Maven Repository
<!-- pom依赖 -->
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>2.9.2</version>
</dependency>
#application.yml 没有这个的话会因为孙子辈依赖的版本不一致导致报错
spring:
mvc:
pathmatch:
matching-strategy: ant_path_matcher
==注意==:这里要对spring boot入口程序开启swagger2
package com.example.springwebdemo;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import springfox.documentation.swagger2.annotations.EnableSwagger2;
@SpringBootApplication
@EnableSwagger2
public class SpringWebDemoApplication {
public static void main(String[] args) {
SpringApplication.run(SpringWebDemoApplication.class, args);
}
}
用pm或浏览器访问 /v2/api-docs可看到自动识别出来的接口信息
- 2)、集成swagger2-ui,实现web中类似postman对接口的测试和api检索, ==当然这里所有的配置都依赖上一步的配置==
<!-- pom依赖 -->
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>2.9.2</version>
</dependency>
注:操作基本等同postman,这里不赘述
三、集成到docker
- 对idea的项目进行maven的package,然后将文件上传到linux宿主机某个目录,执行下方脚本进行Dockerfile设置、打包、运行,然后web测试
tee Dockerfile <<-'EOF'
FROM java:8-alpine
MAINTAINER eric<4575252@gmail.com>
EXPOSE 8080
ADD demo.jar demo.jar
ENTRYPOINT ["java","-jar","demo.jar"]
EOF
docker build -t demo:1.0 .
docker run -p 8081:8080 --rm -d --name demo2 demo:1.0
评论系统未开启,无法评论!