SpringBoot学习入门之Hello项目的构建、单元测试和热部署等(配图文,配置信息详解,附案例源码)
前言:
本文章主要是个人在学习SpringBoot框架时做的一些准备,参考老师讲解进行完善对SpringBoot构建简单项目的学习汇集成本篇文章,作为自己对SpringBoot框架的总结与笔记。
你将会从此篇文章了解到以下四点内容:
- SpringBoot框架简介
- Hello SpringBoot项目的构建
- 单元测试与热部署
- Spring Boot 原理分析和实现
一、SpringBoot框架简介
- 随着互联网的兴起,Spring势如破竹,占据着Java领域轻量级开发的王者地位。
- 随着Java语言的发展以及市场开发的需求,Spring推陈出新,推出了全新的Spring Boot框架。
- Spring Boot是Spring家族的一个子项目,其设计初衷是为了简化Spring配置,从而可以轻松构建独立运行的程序,并极大提高开发效率。
springboot官网:Spring Boot
Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。通过这种方式,Spring Boot致力于在蓬勃发展的快速应用开发领域(rapid application development)成为领导者。
- Spring Boot是基于Spring框架开发的全新框架,其设计目的是简化新Spring应用的初始化搭建和开发过程。
- Spring Boot整合了许多框架和第三方库配置,几乎可以达到“开箱即用”
特点:
SpringBoot基于Spring4.0设计,不仅继承了Spring框架原有的优秀特性,而且还通过简化配置来进一步简化了Spring应用的整个搭建和开发过程。另外SpringBoot通过集成大量的框架使得依赖包的版本冲突,以及引用的不稳定性等问题得到了很好的解决。
- 可以创建独立的Spring应用程序,并且基于其Maven或Gradle插件,可以创建可执行的JARs和WARs;
- 内嵌Tomcat或Jetty等Servlet容器;
- 提供自动配置的“starter”项目对象模型(POMS)以简化Maven配置;
- 尽可能自动配置Spring容器;
- 提供准备好的特性,如指标、健康检查和外部化配置;
- 绝对没有代码生成,不需要XML配置。
二、Hello SpringBoot项目的构建
1.项目构建前提
- JDK 1.8(及以上版本)
- Apache Maven 3.6.0+
- IntelliJ IDEA Ultimate旗舰版
PS:如需JDK、Maven依赖包和idea工具安装包百度网盘获取(地址如下)
链接:https://pan.baidu.com/s/1bCkqDovbPL5npyEDfKLoWQ?pwd=1234
提取码:1234
2.认识idea开发工具
2.1 idea欢迎页面

2.2初始化Maven设置
(1)单击【Configure】→【Project Defaults】→【Settings】进入设置Maven界面

(2)初始化Maven设置

2.3初始化JDK设置
(1)【Configure】→【Project Defaults】→【Project Structure】进入JDK设置页

(2)在界面左侧选择【Project Settings】→【Project】选项(点击Edit选择JDK的安装路径)

3.SpringBoot项目的创建
SpringBoot项目的创建有两种方式
- 方法一:使用Maven创建Spring Boot项目
- 方法二:使用Spring Initializr创建SpringBoot项目
3.1使用Maven方式构建Spring Boot项目
搭建步骤:
(1)创建Maven项目

然后Next

再点击Fnish

(2) 在pom.xml中添加Spring Boot相关依赖
1 <!-- 选择的Web模块依赖启动器、统一父类项目管理 -->
2 <dependency>
3 <groupId>org.springframework.boot</groupId>
4 <artifactId>spring-boot-starter-web</artifactId>
5 </dependency>
6
7 <!-- 测试类依赖、引入Web场景依赖启动器 -->
8 <dependency>
9 <groupId>org.springframework.boot</groupId>
10 <artifactId>spring-boot-starter-test</artifactId>
11 <scope>test</scope>
12 </dependency>
(3)编写主程序启动类
1 @SpringBootApplication
2 public class ManualChapter01Application {
3 public static void main(String[] args){
4 SpringApplication.run(ManualChapter01Application.class,args);
5 }
6 }
(4)创建一个用于Web访问的Controller
1 @RestController // 该注解为组合注解,等同于Spring中@Controller+@ResponseBody注解
2 public class HelloController {
3 @GetMapping("/hello") // 该注解等同于Spring框架中@RequestMapping(RequestMethod.GET)注解
4 public String hello(){
5 return "hello Spring Boot";
6 }
7 }
(5)运行项目
启动项目,在浏览器上访问http://localhost:8080/hello

3.2使用Spring Initializr方式构建Spring Boot项目
搭建步骤:
(1)创建Spring Boot项目

然后Next

创建好的项目结构如下图所示:

(2)创建一个用于Web访问的Controller
1 @RestController
2 public class HelloController {
3 @GetMapping("/hello")
4 public String hello(){
5 return "hello Spring Boot";
6 }
7 }
(3)运行项目
启动项目,在浏览器上访问http://localhost:8080/hello

三、单元测试与热部署
1.单元测试
单元测试(unit testing),是指对软件中的最小可测试单元进行检查和验证。对于单元测试中单元的含义,一般来说,要根据实际情况去判定其具体含义,如C语言中单元指一个函数,Java里单元指一个类,图形化的软件中可以指一个窗口或一个菜单等。总的来说,单元就是人为规定的最小的被测功能模块。单元测试是在软件开发过程中要进行的最低级别的测试活动,软件的独立单元将在与程序的其他部分相隔离的情况下进行测试。
搭建步骤:
1.1在pom文件中添加spring-boot-starter-test测试启动器
1 <!-- 引入热部署依赖 -->
2 <dependency>
3 <groupId>org.springframework.boot</groupId>
4 <artifactId>spring-boot-starter-test</artifactId>
5 <scope>test</scope>
6 </dependency>
1.2编写单元测试类
1 @RunWith(SpringRunner.class) // 测试启动器,并加载Spring Boot测试注解
2 @SpringBootTest // 标记为Spring Boot单元测试类,并加载项目的ApplicationContext上下文环境
3 public class Chapter01ApplicationTests {
4
5 // 自动创建的单元测试方法示例
6 @Test
7 public void contextLoads() {
8 }
9 }
1.3编写单元测试方法
1 @Autowired//注入HelloController实例对象
2 private HelloController helloController;
3 @Test
4 public void helloControllerTest() {
5 String hello = helloController.hello();
6 System.out.println(hello);
7 }
1.4运行结果
执行测试方法helloControllerTest(),控制台输出如图。

2.热部署
搭建步骤:
2.1在pom文件中添加spring-boot-devtools热部署依赖
1 <!-- 引入热部署依赖 -->
2 <dependency>
3 <groupId>org.springframework.boot</groupId>
4 <artifactId>spring-boot-devtools</artifactId>
5 </dependency>
2.2IDEA中热部署设置
(1)选择【File】→【Settings】选项,打开Compiler面板设置页。
设置为自动编译

(2)使用快捷键“Ctrl+Shift+Alt+/”打开Maintenance选项框,选中并打开Registry页面。
指定IDEA工具在程序运行过程中自动编译

2.3热部署测试
(1)启动chapter01项目,通过浏览器访问http://localhost:8080/hello

(2)修改类HelloController中的请求处理方法hello()的返回值,刷新浏览器。

四、Spring Boot 原理分析
1.Spring Boot 依赖管理
Spring Boot为完成不同需求的Spring应用构建,提供了多种不同的依赖管理模板,每种模板均为一系列已完成的依赖的管理。例如在我们的入门程序中,需要构建web项目,我们只需添加spring-boot-starter-web的依赖即可,它会将你所需的其他依赖导入到你的工程中。官方称之为“物料清单”(Bills of Materials),也因此在使用时我们需要构建工具的支持,如Maven或者Gradle等。
1.1 spring-boot-starter-parent依赖
1 <!-- Spring Boot父项目依赖管理 -->
2 <parent>
3 <groupId>org.springframework.boot</groupId>
4 <artifactId>spring-boot-starter-parent</artifactId>
5 <version>2.1.3.RELEASE</version>
6 <relativePath/>
7 </parent>
注:spring-boot-starter-parent是通过<properties>标签对一些常用技术框架的依赖文件进行了统一版本号管理。
1.2 spring-boot-starter-web依赖
1 <dependency>
2 <groupId>org.springframework.boot</groupId>
3 <artifactId>spring-boot-starter-web</artifactId>
4 </dependency>
注:spring-boot-starter-web依赖启动器的主要作用是提供Web开发场景所需的底层所有依赖文件,它对Web开发场景所需的依赖文件进行了统一管理。
2.Spring Boot自动配置
Spring Boot会根据类路径中的jar包、类,为jar包里的类自动配置,这样可以极大的减少配置的数量。简单点说就是它会根据定义在classpath下的类,自动的给你生成一些Bean,并加载到Spring的Context中。自动配置充分的利用了spring 4.0的条件化配置特性,能够自动配置特定的Spring bean,用来启动某项特性。
2.1 Spring Boot自动配置的实现
- Spring Boot应用的启动入口是@SpringBootApplication注解标注类中的main()方法;
- @SpringBootApplication能够扫描Spring组件并自动配置Spring Boot。
- @SpringBootApplication注解是一个组合注解,包含@SpringBootConfiguration、@EnableAutoConfiguration、@ComponentScan三个核心注解

2.2 Spring Boot 的执行流程主要分为两步:

(1)初始化Spring Application实例

(2)初始化Spring Boot 项目启动

总结:
看完本篇文章,你应该学会了自主搭建SpringBoot项目,认识了此框架的单元测试和热部署等配置信息。
以上便是本篇文章所写的关于SpringBoot框架入门的所有内容了,码字不易,对你有帮助的话,请给个三连(关注、点赞、收藏)有问题可评论区留言讨论。
后期会完善SpringBoot框架进阶的相关知识,如有帮助的话,敬请关注楼主后续发文(不定时发文)
转载时请注明出处链接
参考文档:
1.百度百科:https://www.baidu.com/
2.传智播客-黑马程序教程:http://stu.ityxb.com/
SpringBoot学习入门之Hello项目的构建、单元测试和热部署等(配图文,配置信息详解,附案例源码)的更多相关文章
- springboot学习笔记:7.IDEA下5步完成热部署配置
开发工具IDEA 2017.02 JDK1.8 1.pom.xml中增加: <dependency> <groupId>org.springframework.boot&l ...
- vue-cli的webpack模板项目配置文件分析,配置信息详解
比较不错的一篇详解文章: 地址:http://blog.csdn.net/hongchh/article/details/55113751#comments
- Springboot 整合 Dubbo/ZooKeeper 详解 SOA 案例
摘要: 原创出处:www.bysocket.com 泥瓦匠BYSocket 希望转载,保留摘要,谢谢! “看看星空,会觉得自己很渺小,可能我们在宇宙中从来就是一个偶然.所以,无论什么事情,仔细想一 ...
- SpringBoot基础学习(一) SpringBoot概念、简单案例实现、单元测试及热部署讲解
SpringBoot概念 Spring优缺点分析 Spring优点 Spring是Java企业版(Java Enterprise Edition,JEE,也称J2EE)的轻量级代替品,无需开发重量级的 ...
- SpringBoot 项目搭建(详细介绍+案例源码)
SpringBoot 项目搭建 SpringBoot 项目整合源码 SpringBoot 项目整合 一.项目准备 1.1 快速创建 SpringBoot 项目 1.2 标准项目结构图如下 1.3 添加 ...
- 开源项目SMSS发开指南(五)——SSL/TLS加密通信详解(下)
继上一篇介绍如何在多种语言之间使用SSL加密通信,今天我们关注Java端的证书创建以及支持SSL的NioSocket服务端开发.完整源码 一.创建keystore文件 网上大多数是通过jdk命令创建秘 ...
- Zookeeper从入门到精通(开发详解,案例实战,Web界面监控)
ZooKeeper是Hadoop的开源子项目(Google Chubby的开源实现),它是一个针对大型分布式系统的可靠协调系统,提供的功能包括:配置维护.命名服务.分布式同步.组服务等. Zookee ...
- springboot 学习之路 9 (项目启动后就执行特定方法)
目录:[持续更新.....] spring 部分常用注解 spring boot 学习之路1(简单入门) spring boot 学习之路2(注解介绍) spring boot 学习之路3( 集成my ...
- SpringBoot的旅游项目——day01(学习记录附赠源码)
前言 学完SpringBoot的项目,Github地址,欢迎start,一起学习! 第一天 一.技术选型 基于SpringBoot+VUE的前后端分离的仿照马蜂窝的项目. 后端选用的技术为: Spri ...
随机推荐
- Redis-46面试题
1.什么是 Redis?简述它的优缺点? Redis 的全称是:Remote Dictionary.Server,本质上是一个 Key-Value 类型的内存数据库,很像 memcached,整个数据 ...
- mysql导出csv格式命令
mysql -h 127.0.0.1 -u user -p123456 -Bse "select name,age from user where age > 10;" | ...
- MySQL 数据库的tab 补全功能 (懒人必备)
MySQL 数据库的tab补全功能 跟着步骤走~~ 懒人养成第一步 不仅帮你补全 甚至预判你的预判,就问你可怕不可怕 1.安装相关依赖软件(需要配置yum官方 ...
- Nginx的优化与防盗链
Nginx的优化与防盗链 1.隐藏版本号 2.修改用户与组 3.缓存时间 4.日志切割 5.连接超时 6.更改进程数 7.配置网页压缩 8.配置防盗链 9.fpm参数优化 1.隐藏版本号: 可以使用 ...
- VBA如何实现筛选条件之“排除某些值”
小爬一般习惯使用Python来解决爬虫和某些办公自动化场景问题,不过最近却需要实现一个VBA需求:从一堆人员处理的Excel数据记录中,排除某些"用户名称"处理的数据.整个思考过程 ...
- 利用Monkey进行APP测试
APP测试策略 功能测试 安装.卸载测试 升级测试(跨版本) 数据丢失 版本兼容 业务逻辑测试 UI测试 异常测试 适配测试 软件 兼容性测试 硬件 性能测试 效率测试 启动时间 响应时间 页面流畅度 ...
- 虫师Selenium2+Python_7、unittest单元测试框架
P173--通过unittest单元测试框架别写测试用例 from calculator import Count import unittest class TestCount(unittest ...
- 垃圾陷阱 && [NOIP2014 提高组] 飞扬的小鸟
#include<bits/stdc++.h> using namespace std; int d,n,dp[1010]; struct node{int t,f,h;} a[1010] ...
- 降维处理PCA
要理解什么是降维,书上给出了一个很好但是有点抽象的例子. 说,看电视的时候屏幕上有成百上千万的像素点,那么其实每个画面都是一个上千万维度的数据:但是我们在观看的时候大脑自动把电视里面的场景放在我们所能 ...
- Solution -「HDU 6875」Yajilin
\(\mathcal{Description}\) Link.(HDU 裂开了先放个私链 awa.) 在一个 \(n\times n\) 的方格图中,格子 \((i,j)\) 有权值 \(w_ ...