Mock平台2-Java Spring Boot框架基础知识
微信搜索【大奇测试开】,关注这个坚持分享测试开发干货的家伙。
认识Spring Boot
在N年前的大学时代想要开发一个Web服务使用的还是SSH框架(struts+spring+hibernate)尤其是Spring这块需要进行大量的配置工作,为了简化应用搭建和开发过程出现了Sprint Boot全新开源框架,且功能更加丰富,性能上更加稳定健壮,还提供了大量开箱即用(out-of-the-box)的依赖模块,使用起来更加简单高效,尤其是这几年在互联网微服务的应用上热度很高。
特性
- 独立的 Spring 应用程序
- 直接嵌入 Tomcat、Jetty 或 Undertow等容器(无需部署 WAR 文件)
- 提供 'starter' 核心简化构建配置
- 尽可能多的自动配置 Spring 和 3rd 方库
- 提供已集成的产品功能,例如指标、健康检查和外部化配置
- 完全无需代码生成,无需 XML 配置
Starter
Sprint Boot真正少量配置甚至零配置使用各种组件的核心,它将日常应用研发中的各种场景都抽取出来做成独立的 starter(启动器),使用的时只需要在 Maven 中引入 starter 依赖,SpringBoot 就能自动扫描到要加载的信息并启动相应的默认配置。当然也可以自定义修改配置,除了官方Starter还有第三方技术提供,更可以自己开发。
总之在个人开发体验上来说,在如此简单高效+JAVA语言稳定开发的特性下,对于独立Server的服务应用开发相比Python我更愿意用Spring Boot 框架进行开发,下面就参考官方给出一个Demo实例。
不过开始实践之前还需要注意以下几点:
- 本篇适合有一点JAVA语言基础的小白,以前写过Spring Boot项目的可忽略看后续开发篇文章
- 系列文章不做技术展开和深入讲解,只做到应用的层面的讲解
- 示例和项目开发需要提前搭建好依赖环境
- 环境: Java JDK 1.8.x 、Maven 3.x
- 数据库:Myql 5.7+
- IDE:IntelliJ IDEA / Eclipse
搭建一个API项目
项目创建
初始化一个Spring Boot 应用两种方式,官方 和 IDE
方式一:官方初始化项目包
Step1. 通过访问 https://start.spring.io/ 选择开发选项和添加依赖包一键生成应用包。
注意本地JDK装的是1.8.X版本,所有Java的选项需要改成8,然后点击GENERATE就会自动下载一个按照选项配置生成的项目包。
Step2. 解压到某路径下,打开IDEA导入项目,选择到 pom.xml -> Open As Project -> Trust Project 导入包后等待maven依赖下加载完成。
方式二:IDEA创建Sprint Boot
新建一个项目(如果IDEA是最新版,请在上一个项目中File->Close project 才会进入到项目管理窗口),New Project -> Spring Initializr 选项内容如图所示。
下一步Next 选择版本和添加依赖,点击Finish完成创建。
最终两种方式都会创建出如下的结构的 Spring Boot 应用项目
目录结构说明
|-/src/mian/java
主开发代码和程序入口
|-/src/mian/resources
配置或静态文件资源区
|-/src/mian/resources/application.properties
默认属性配置文件
|-/src/test
测试代码和测试初始化入口
|-pom.xml
应用Maven等配置文件
依赖包说明
spring-boot-starter-web
开发Web应用的模块spring-boot-starter-actuator
程序监控器模块spring-boot-starter-test
默认引用 测试模块 如JUnitspring-boot-starter
默认引用核心模块,如果引用了starter-web此依赖自动包含在其中,可以不在项目中显示引用。
实际开发中还会为创建不同模式的目录结构比如MVC,其他的依赖包添加也都会像图中选中部分一样方式随时添加即可。
项目运行
依赖全部初始化完成后,其实暂时不需要编写任何代码就能运行,直接点击IDEA的工具栏Run或Debug按钮。
或通过 Terminal 执行 Maven命令行运行应用。
mvnw spring-boot:run
因为一开始添加了监控依赖包,所以可以直接访问这个接口 http://localhost:8080/actuator 看到一些可访问的接口,选择 /health 健康检查看下服务状态为 UP 服务正常。
编写代码
接下来开发第一个自己的接口,在 /src/mian/java
先创建个资源返回类 HelloEntity.java
用于JSON格式的数据返回,code
表示状态码,content
表示内容。
package com.daqi.ideademo; public class HelloEntity {
private Integer code;
private String content; public HelloEntity(Integer code, String content) {
this.code = code;
this.content = content;
} public long getCode() {
return code;
} public String getContent() {
return content;
}
}
再创建一个控制器类,用于实现API Web服务,识别处理HTTP请求通过 @RestController
(包含@Controller和@ResponseBody )注解标记为控制类,通过@GetMapping
注解标记GET方法请求,并给定一个接口路径。
package com.daqi.ideademo; import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController; @RestController
public class HelloController { @GetMapping("/api/sayHello")
public HelloEntity sayHello(@RequestParam(value = "content") String content){
String respContent = "你好,".concat(content);
return new HelloEntity(200, respContent);
}
}
@RequestParam
指定了一个接口请求Params参数,sayHello
代码中返回code=200,content=格式化接收参数的内容字符串。
以上内容不必过多纠结,后边的分享中在用到的时候都会进行讲解,这块内容照着做有个整体印象即可
运行和测试
在运行程序之前先对入口程序做个简单解释说明
@SpringBootApplication是一个复合注释,包含以下内容:
- @Configuration: 将类标记为应用程序上下文的 bean 源。
- @EnableAutoConfiguration:告诉 Spring Boot 根据类路径设置、其他 bean 和各种属性设置开始添加 bean。例如,如果spring-webmvc位于类路径上,则此注释将应用程序标记为 Web 应用程序并激活关键行为,例如设置DispatcherServlet.
- @ComponentScan: 开启自动扫描功能,告诉 Spring 在包中查的组件、配置和服务等。
其中 main()
方法使用 Spring Boot 的SpringApplication.run()方法来启动应用程序。
接口测试
重新执行 mvnw spring-boot:run
或 IDEA 运行按钮,编译重启服务,通过PostMan做个接口带参请求测试。
测试结果如图,正确按照预期给予返回结果。
至此一个简单的后端服务就搞定了,你学会了吗?如果着急想提前恶补 JAVA Spring Boot 知识的,推荐一个专项学习导航网站,最后希望你学过后有所收获,未来不断成长,喜欢就多多支持实战原创吧!
推荐学习
Spring Boot 学习导航 http://springboot.fun/
资料参考
[1] https://spring.io/guides/gs/rest-service/
[2] http://www.ityouknow.com/spring-boot.html
关于后续更多进展和分享欢迎持续关注公众号或博客。
Mock平台2-Java Spring Boot框架基础知识的更多相关文章
- spring boot框架相关知识
1.spring:一个轻量级的控制反转和面向切面的容器,专业的开发Web项目的开源框架. spring mvc:是基于spring的mvc框架,属于一个企业WEB开发的MVC框架,涵盖面包括前端 ...
- Java Spring boot 多商户入驻 外卖|跑腿|代驾 Uniapp版本
技术说明: 源码下载:https://www.yuanmahy.com/8357.html 开发环境:jdk1.8,mysql5.7,node 9.4,redis6.2,npm6.9 开发工具:前端使 ...
- 基于Spring Boot框架开发的一个Mock
背景:在项目后端接口开发还未完成,我们无法进行自动化接口用例的调试,希望与开发同步完成接口自动化用例的编写及调试,待项目转测后,可以直接跑自动化用例,提高测试效率. 选用的maven + Spring ...
- Spring Boot框架开发的Java项目在CentOS7上的部署
需求:上级拿来一份Spring Boot框架开发的Java项目代码让我在服务器上运行起来,只说了一句该框架是自带了Tomcat(不用重新安装Tomcat),一份代码下有两个项目(一个管理端项目,一个用 ...
- 在Spring Boot框架下使用WebSocket实现消息推送
Spring Boot的学习持续进行中.前面两篇博客我们介绍了如何使用Spring Boot容器搭建Web项目(使用Spring Boot开发Web项目)以及怎样为我们的Project添加HTTPS的 ...
- Java Spring Boot VS .NetCore (四)数据库操作 Spring Data JPA vs EFCore
Java Spring Boot VS .NetCore (一)来一个简单的 Hello World Java Spring Boot VS .NetCore (二)实现一个过滤器Filter Jav ...
- Java Spring Boot VS .NetCore (八) Java 注解 vs .NetCore Attribute
Java Spring Boot VS .NetCore (一)来一个简单的 Hello World Java Spring Boot VS .NetCore (二)实现一个过滤器Filter Jav ...
- (Spring Boot框架)快速入门
Spring Boot 系列文章推荐 Spring Boot 入门 Spring Boot 属性配置和使用 Spring Boot 集成MyBatis Spring Boot 静态资源处理 今天介绍一 ...
- [原创]Spring boot 框架构建jsp web应用
说明 Spring boot支持将web项目打包成一个可执行的jar包,内嵌tomcat服务器,独立部署 为支持jsp,则必须将项目打包为war包 pom.xml中设置打包方式 <packagi ...
随机推荐
- Linux命令date日期时间和Unix时间戳互转
A.将日期转换为Unix时间戳将当前时间以Unix时间戳表示: date +%s 输出如下: 1361542433 转换指定日期为Unix时间戳: date -d '2013-2-22 22:14' ...
- 如何使Label显示时,一行顶部居中,两行靠左显示----董鑫
有时我们会碰到这种情况,一个要根据内容显示一行还是两行,一行时还要靠着顶部再居中,比如下面 最左边的名称,要求是靠上的,如果按照正常的方式写的话,可能一行的话就会出现居中显示了,不会顶着头部显示. 我 ...
- EPF:一种基于进化、协议感知和覆盖率引导的网络协议模糊测试框架
本文系原创,转载请说明出处:from 信安科研人 目录 实验 工具的安装 1.安装AFL++ 2.安装epf 对IEC104协议库进行fuzz 实验准备 使用AFL++中的编译器插桩 开始fuzz 原 ...
- linux13
ansible-playbook实现MySQL的二进制部署 Ansible playbook实现apache批量部署,并对不同主机提供以各自IP地址为内容的index.html http的报文结构和状 ...
- 针对某p社游戏某整合包的研究
软件分析 垃圾re手 最近在玩群星 创意工坊里面下载了整合包 进群下载排序文件后竟然发现要付费() 28R够吃一顿好的 马上来分析一下这个软件 这是一个四版整合包的mod安装器 其中樱花远征和新星纪元 ...
- find 查询命令 & 正则表达式
今日内容 find 正则表达式 Linux 三剑客之 grep 内容详细 一.find 按名称或属性查询文件 按名称查询 find [查找目录] [参数] [] 通配符 : * 表示匹配多个字符 ? ...
- Solution -「AGC 012F」「AT 2366」Prefix Median
\(\mathcal{Description}\) Link. 给定序列 \(\{a_{2n-1}\}\),将 \(\{a_{2n-1}\}\) 按任意顺序排列后,令序列 \(b_i\) 为前 ...
- Filter(过滤器)与Listener(监听器)详解
11.Filter(重点) Filter:过滤器,用来过滤网站的数据: 处理中文乱码 登陆验证... Filter开发步骤: 导包 编写过滤器 导包不要错 实现Filter接口,重写对应的方法即可 p ...
- Nginx--Sorry, the page you are looking for is currently unavailable
- soc AXI接口术语和特性
AXI接口术语和特性 1.outstanding 2.interleaving 3.out-of-oder 4.写数据可以优先于写地址 5.大小端 小端:低地址数据放在总线bus的低位. 大端:低地址 ...