微信搜索【大奇测试开】,关注这个坚持分享测试开发干货的家伙。

认识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实例。

不过开始实践之前还需要注意以下几点

  1. 本篇适合有一点JAVA语言基础的小白,以前写过Spring Boot项目的可忽略看后续开发篇文章
  2. 系列文章不做技术展开和深入讲解,只做到应用的层面的讲解
  3. 示例和项目开发需要提前搭建好依赖环境
    1. 环境: Java JDK 1.8.x 、Maven 3.x
    2. 数据库:Myql 5.7+
    3. 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 默认引用 测试模块 如JUnit
  • spring-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框架基础知识的更多相关文章

  1. spring boot框架相关知识

    1.spring:一个轻量级的控制反转和面向切面的容器,专业的开发Web项目的开源框架.    spring mvc:是基于spring的mvc框架,属于一个企业WEB开发的MVC框架,涵盖面包括前端 ...

  2. Java Spring boot 多商户入驻 外卖|跑腿|代驾 Uniapp版本

    技术说明: 源码下载:https://www.yuanmahy.com/8357.html 开发环境:jdk1.8,mysql5.7,node 9.4,redis6.2,npm6.9 开发工具:前端使 ...

  3. 基于Spring Boot框架开发的一个Mock

    背景:在项目后端接口开发还未完成,我们无法进行自动化接口用例的调试,希望与开发同步完成接口自动化用例的编写及调试,待项目转测后,可以直接跑自动化用例,提高测试效率. 选用的maven + Spring ...

  4. Spring Boot框架开发的Java项目在CentOS7上的部署

    需求:上级拿来一份Spring Boot框架开发的Java项目代码让我在服务器上运行起来,只说了一句该框架是自带了Tomcat(不用重新安装Tomcat),一份代码下有两个项目(一个管理端项目,一个用 ...

  5. 在Spring Boot框架下使用WebSocket实现消息推送

    Spring Boot的学习持续进行中.前面两篇博客我们介绍了如何使用Spring Boot容器搭建Web项目(使用Spring Boot开发Web项目)以及怎样为我们的Project添加HTTPS的 ...

  6. Java Spring Boot VS .NetCore (四)数据库操作 Spring Data JPA vs EFCore

    Java Spring Boot VS .NetCore (一)来一个简单的 Hello World Java Spring Boot VS .NetCore (二)实现一个过滤器Filter Jav ...

  7. Java Spring Boot VS .NetCore (八) Java 注解 vs .NetCore Attribute

    Java Spring Boot VS .NetCore (一)来一个简单的 Hello World Java Spring Boot VS .NetCore (二)实现一个过滤器Filter Jav ...

  8. (Spring Boot框架)快速入门

    Spring Boot 系列文章推荐 Spring Boot 入门 Spring Boot 属性配置和使用 Spring Boot 集成MyBatis Spring Boot 静态资源处理 今天介绍一 ...

  9. [原创]Spring boot 框架构建jsp web应用

    说明 Spring boot支持将web项目打包成一个可执行的jar包,内嵌tomcat服务器,独立部署 为支持jsp,则必须将项目打包为war包 pom.xml中设置打包方式 <packagi ...

随机推荐

  1. Linux命令date日期时间和Unix时间戳互转

    A.将日期转换为Unix时间戳将当前时间以Unix时间戳表示: date +%s 输出如下: 1361542433 转换指定日期为Unix时间戳: date -d '2013-2-22 22:14' ...

  2. 如何使Label显示时,一行顶部居中,两行靠左显示----董鑫

    有时我们会碰到这种情况,一个要根据内容显示一行还是两行,一行时还要靠着顶部再居中,比如下面 最左边的名称,要求是靠上的,如果按照正常的方式写的话,可能一行的话就会出现居中显示了,不会顶着头部显示. 我 ...

  3. EPF:一种基于进化、协议感知和覆盖率引导的网络协议模糊测试框架

    本文系原创,转载请说明出处:from 信安科研人 目录 实验 工具的安装 1.安装AFL++ 2.安装epf 对IEC104协议库进行fuzz 实验准备 使用AFL++中的编译器插桩 开始fuzz 原 ...

  4. linux13

    ansible-playbook实现MySQL的二进制部署 Ansible playbook实现apache批量部署,并对不同主机提供以各自IP地址为内容的index.html http的报文结构和状 ...

  5. 针对某p社游戏某整合包的研究

    软件分析 垃圾re手 最近在玩群星 创意工坊里面下载了整合包 进群下载排序文件后竟然发现要付费() 28R够吃一顿好的 马上来分析一下这个软件 这是一个四版整合包的mod安装器 其中樱花远征和新星纪元 ...

  6. find 查询命令 & 正则表达式

    今日内容 find 正则表达式 Linux 三剑客之 grep 内容详细 一.find 按名称或属性查询文件 按名称查询 find [查找目录] [参数] [] 通配符 : * 表示匹配多个字符 ? ...

  7. Solution -「AGC 012F」「AT 2366」Prefix Median

    \(\mathcal{Description}\)   Link.   给定序列 \(\{a_{2n-1}\}\),将 \(\{a_{2n-1}\}\) 按任意顺序排列后,令序列 \(b_i\) 为前 ...

  8. Filter(过滤器)与Listener(监听器)详解

    11.Filter(重点) Filter:过滤器,用来过滤网站的数据: 处理中文乱码 登陆验证... Filter开发步骤: 导包 编写过滤器 导包不要错 实现Filter接口,重写对应的方法即可 p ...

  9. Nginx--Sorry, the page you are looking for is currently unavailable

  10. soc AXI接口术语和特性

    AXI接口术语和特性 1.outstanding 2.interleaving 3.out-of-oder 4.写数据可以优先于写地址 5.大小端 小端:低地址数据放在总线bus的低位. 大端:低地址 ...