前言:

本文章主要是个人在学习SpringBoot框架时做的一些准备,参考老师讲解进行完善对SpringBoot构建简单项目的学习汇集成本篇文章,作为自己对SpringBoot框架的总结与笔记。

你将会从此篇文章了解到以下四点内容:

  1. SpringBoot框架简介
  2. Hello SpringBoot项目的构建
  3. 单元测试与热部署
  4. 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通过集成大量的框架使得依赖包的版本冲突,以及引用的不稳定性等问题得到了很好的解决。

SpringBoot所具备的特征有:
  1. 可以创建独立的Spring应用程序,并且基于其Maven或Gradle插件,可以创建可执行的JARs和WARs;
  2. 内嵌Tomcat或Jetty等Servlet容器;
  3. 提供自动配置的“starter”项目对象模型(POMS)以简化Maven配置;
  4. 尽可能自动配置Spring容器;
  5. 提供准备好的特性,如指标、健康检查和外部化配置;
  6. 绝对没有代码生成,不需要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.热部署

所谓热部署,就是在应用正在运行的时候升级软件,却不需要重新启动应用。
对于Java应用程序来说,热部署就是在运行时更新Java类文件。在基于Java的应用服务器实现热部署的过程中,类装入器扮演着重要的角色。大多数基于Java的应用服务器,包括EJB服务器和Servlet容器,都支持热部署。类装入器不能重新装入一个已经装入的类,但只要使用一个新的类装入器实例,就可以将类再次装入一个正在运行的应用程序。

搭建步骤:

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)选择【FileSettings】选项,打开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项目的构建、单元测试和热部署等(配图文,配置信息详解,附案例源码)的更多相关文章

  1. springboot学习笔记:7.IDEA下5步完成热部署配置

    开发工具IDEA 2017.02   JDK1.8 1.pom.xml中增加: <dependency> <groupId>org.springframework.boot&l ...

  2. vue-cli的webpack模板项目配置文件分析,配置信息详解

    比较不错的一篇详解文章: 地址:http://blog.csdn.net/hongchh/article/details/55113751#comments

  3. Springboot 整合 Dubbo/ZooKeeper 详解 SOA 案例

    摘要: 原创出处:www.bysocket.com 泥瓦匠BYSocket 希望转载,保留摘要,谢谢!   “看看星空,会觉得自己很渺小,可能我们在宇宙中从来就是一个偶然.所以,无论什么事情,仔细想一 ...

  4. SpringBoot基础学习(一) SpringBoot概念、简单案例实现、单元测试及热部署讲解

    SpringBoot概念 Spring优缺点分析 Spring优点 Spring是Java企业版(Java Enterprise Edition,JEE,也称J2EE)的轻量级代替品,无需开发重量级的 ...

  5. SpringBoot 项目搭建(详细介绍+案例源码)

    SpringBoot 项目搭建 SpringBoot 项目整合源码 SpringBoot 项目整合 一.项目准备 1.1 快速创建 SpringBoot 项目 1.2 标准项目结构图如下 1.3 添加 ...

  6. 开源项目SMSS发开指南(五)——SSL/TLS加密通信详解(下)

    继上一篇介绍如何在多种语言之间使用SSL加密通信,今天我们关注Java端的证书创建以及支持SSL的NioSocket服务端开发.完整源码 一.创建keystore文件 网上大多数是通过jdk命令创建秘 ...

  7. Zookeeper从入门到精通(开发详解,案例实战,Web界面监控)

    ZooKeeper是Hadoop的开源子项目(Google Chubby的开源实现),它是一个针对大型分布式系统的可靠协调系统,提供的功能包括:配置维护.命名服务.分布式同步.组服务等. Zookee ...

  8. springboot 学习之路 9 (项目启动后就执行特定方法)

    目录:[持续更新.....] spring 部分常用注解 spring boot 学习之路1(简单入门) spring boot 学习之路2(注解介绍) spring boot 学习之路3( 集成my ...

  9. SpringBoot的旅游项目——day01(学习记录附赠源码)

    前言 学完SpringBoot的项目,Github地址,欢迎start,一起学习! 第一天 一.技术选型 基于SpringBoot+VUE的前后端分离的仿照马蜂窝的项目. 后端选用的技术为: Spri ...

随机推荐

  1. Idea 如何不通过模板创建支持Maven的JavaWeb项目

    手动与模板创建的区别,请自行体会. 1. 点击创建项目 2. 不勾选骨架 3.填写项目名称以及该Maven项目坐标(groupid.artifactid.version). 在仓库中,以坐标确定项目. ...

  2. 直播流媒体fms

    第一步  下载  Flash Media Server 4.5 安装教程网上很多 也很简单 我的密码记录  用户admin  密码admin23456 第二步 直接 下载 直播测试工具 FlashMe ...

  3. Redis性能管理

    Redis性能管理 目录 Redis性能管理 一.查看Redis内存使用 二.内存碎片率 三.内存使用率 四.避免内存交换发生的方法 1. Hash数据类型 1.1 HSET/HGET/HDEL/HE ...

  4. 关于单调性优化DP算法的理解

    Part1-二分栈优化DP 引入 二分栈主要用来优化满足决策单调性的DP转移式. 即我们设\(P[i]\)为\(i\)的决策点位置,那么\(P[i]\)满足单调递增的性质的DP. 由于在这种DP中,满 ...

  5. linux c 线程相关函数

    线程相关函数(1)-pthread_create(), pthread_join(), pthread_exit(), pthread_cancel() 创建取消线程 一. pthread_creat ...

  6. notepad++颜色属性解释

    Global Styles Indent guideline style  缩进参考线的颜色Brace highlight style 鼠标指针在框架左右时框架的颜色(如css中{}   js中的() ...

  7. python篇第10天【While 循环语句】

    while 语句时还有另外两个重要的命令 continue,break 来跳过循环,continue 用于跳过该次循环,break 则是用于退出循环,此外"判断条件"还可以是个常值 ...

  8. 在win10上安装face_recognition(人脸识别)

    github上有个项目face_recognition,是用于人脸识别的 主要是window上安装这个项目会繁琐些,linux上据项目文档上介绍是妥妥的. 项目地址:  https://github. ...

  9. Solution -「ARC 082D」Sandglass

    \(\mathcal{Description}\)   Link.   一个沙漏内共 \(Xg\) 沙,令初始时上半部分为 A,下半部分为 B.沙漏在 \(r_1,r_2,\cdots,r_n\) 时 ...

  10. Thread.currentThread().getName() 和 this.getName()区别详解

    currentThread的详解 currentThread方法是Thread类的一个静态方法,用来获取当前运行的代码段,正在被哪个线程调用.我们先来看一眼源码. 是一个native方法.直接与系统层 ...