1、第1章 Spring Boot入门项目的构建自动化配置原理单元测试和热部署执行流程 学习目标了解Spring Boot的发展和优点。12 掌握Spring Boot的项目构建。掌握Spring Boot 的单元测试和热部署。34熟悉Spring Boot的自动化配置原理以及执行流程。目录Spring Boot 入门程序1.21.21.11.1Spring Boot 概述1.31.3 单元测试和热部署Spring Boot原理分析1.41.4点击查看本案例相关知识点点击查看本案例相关知识点点击查看本案例相关知识点点击查看本案例相关知识点1.1 Spring Boot概述 知识架构12Spring
2、 Boot简介Spring Boot优点1.2 Spring Boot 入门程序入门程序 知识架构123环境准备使用Maven方式构建Spring Boot项目使用Spring Initializr方式构建Spring Boot项目1.3 单元测试和热部署 知识架构12单元测试热部署1.4 Spring Boot 原理分析原理分析 知识架构123Spring Boot 依赖管理Spring Boot 自动配置Spring Boot 执行流程本章将从Spring Boot开发入门入手,带领大家正式进入SpringBoot框架的学习,并对Spring Boot的相关原理进行深入分析。章节概要 随着
3、互联网的兴起,Spring势如破竹,占据着Java领域轻量级开发的王者地位。随着Java语言的发展以及市场开发的需求,Spring推陈出新,推出了全新的Spring Boot框架。Spring Boot是Spring家族的一个子项目,其设计初衷是为了简化Spring配置,从而可以轻松构建独立运行的程序,并极大提高开发效率。1.1 Spring Boot 概述什么是Spring Boot?认识Spring Boot 1.1 Spring Boot 概述认识Spring BootSpring Boot是基于Spring框架开发的全新框架,其设计目的是简化新Spring应用的初始化搭建和开发过程。S
4、pring Boot整合了许多框架和第三方库配置,几乎可以达到“开箱即用”。简介 1.1 Spring Boot 概述认识Spring Boot可快速构建独立的Spring应用直接嵌入Tomcat、Jetty和Undertow服务器(无需部署WAR文件)提供依赖启动器简化构建配置极大程度的自动化配置Spring和第三方库提供生产就绪功能极少的代码生成和XML配置Spring Boot 优点 1.2 Spring Boot 入门程序JDK 1.8.0_201(及以上版本)Apache Maven 3.6.0IntelliJ IDEA Ultimate旗舰版环境准备保证安装好的软件如下:1.2 S
5、pring Boot 入门程序认识IDEA欢迎页 1.2 Spring Boot 入门程序初始化Maven设置(1)单击【Configure】【Project Defaults】【Settings】进入设置Maven界面初始化Maven设置(2)初始化Maven设置 1.2 Spring Boot 入门程序mavenmavenmaven安装目录安装目录setting.xmlsetting.xml目录目录mavenmaven仓库位置仓库位置 1.2 Spring Boot 入门程序初始化JDK设置(1)【Configure】【Project Defaults】【Project Structure
6、】进入JDK设置页初始化JDK设置(2)在界面左侧选择【Project Settings】【Project】选项 1.2 Spring Boot 入门程序JDK安装路径安装路径 1.2 Spring Boot 入门程序新建Spring Boot项目方式一使用Maven创建Spring Boot项目使用Spring Initializr创建SpringBoot项目方式二两种方式:1.2 Spring Boot 入门程序使用Maven方式构建Spring Boot项目1.创建Maven项目2.在pom.xml中添加Spring Boot相关依赖3.编写主程序启动类4.创建一个用于Web访问的Con
7、troller5.运行项目搭建步骤:1.2 Spring Boot 入门程序使用Maven方式构建Spring Boot项目 创建Maven项目 1.2 Spring Boot 入门程序使用Maven方式构建Spring Boot项目 创建Maven项目 1.2 Spring Boot 入门程序使用Maven方式构建Spring Boot项目 创建Maven项目 1.2 Spring Boot 入门程序org.springframework.bootspring-boot-starter-parent2.1.3.RELEASEorg.springframework.bootspring-boo
8、t-starter-web统一父类项目管理Web依赖启动器使用Maven方式构建Spring Boot项目 在pom.xml中添加Spring Boot相关依赖 1.2 Spring Boot 入门程序使用Maven方式构建Spring Boot项目SpringBootApplication public class ManualChapter01Application public static void main(String args)SpringApplication.run(ManualChapter01Application.class,args);标记该类为主程序启动类Sprin
9、gApplication.run()方法启动主程序类 编写主程序启动类 1.2 Spring Boot 入门程序使用Maven方式构建Spring Boot项目RestController public class HelloController GetMapping(/hello)public String hello()return hello Spring Boot;该注解为组合注解,等同于Spring中Controller+ResponseBody注解等同于Spring框架中RequestMapping(RequestMethod.GET)注解 创建一个用于Web访问的Controll
10、er 1.2 Spring Boot 入门程序使用Maven方式构建Spring Boot项目启动项目,在浏览器上访问启动项目,在浏览器上访问 http:/localhost:8080/hellohttp:/localhost:8080/hello 运行项目 1.2 Spring Boot 入门程序使用Spring Initializr方式构建Spring Boot项目1.创建Spring Boot项目2.创建一个用于Web访问的Controller3.运行项目搭建步骤:1.2 Spring Boot 入门程序 创建Spring Boot项目使用Spring Initializr方式构建Spr
11、ing Boot项目 1.2 Spring Boot 入门程序使用Spring Initializr方式构建Spring Boot项目 创建Spring Boot项目 1.2 Spring Boot 入门程序使用Spring Initializr方式构建Spring Boot项目创建好的项目结构如下图所示:1.2 Spring Boot 入门程序 创建一个用于Web访问的Controller使用Spring Initializr方式构建Spring Boot项目RestController public class HelloController GetMapping(/hello)publi
12、c String hello()return hello Spring Boot;1.2 Spring Boot 入门程序使用Spring Initializr方式构建Spring Boot项目启动项目,在浏览器上访问启动项目,在浏览器上访问 http:/localhost:8080/hellohttp:/localhost:8080/hello 运行项目 1.3 单元测试与热部署 单元测试1.在pom文件中添加spring-boot-starter-test测试启动器2.编写单元测试类3.编写单元测试方法4.运行结果搭建步骤:1.3 单元测试与热部署 单元测试 在pom文件中添加spring
13、-boot-starter-test测试启动器org.springframework.bootspring-boot-starter-testtest 1.3 单元测试与热部署 单元测试 编写单元测试类RunWith(SpringRunner.class)SpringBootTest public class Chapter01ApplicationTests Testpublic void contextLoads()加载Spring Boot测试注解加载项目的ApplicationContext上下文环境 1.3 单元测试与热部署 单元测试 编写单元测试方法Autowiredprivate
14、 HelloController helloController;Testpublic void helloControllerTest()String hello=helloController.hello();System.out.println(hello);注入了HelloController实例对象 1.3 单元测试与热部署 单元测试 运行结果 执行执行测试方法测试方法helloControllerTesthelloControllerTest()(),控制台输出如图。,控制台输出如图。1.3 单元测试与热部署 热部署1.在pom文件中添加spring-boot-devtools热部
15、署依赖2.IDEA中热部署设置3.热部署测试搭建步骤:1.3 单元测试与热部署 热部署 在pom文件中添加spring-boot-devtools热部署依赖 org.springframework.boot spring-boot-devtools 1.3 单元测试与热部署 热部署 IDEA中热部署设置 选择【选择【FileFile】【SettingsSettings】选项,打开】选项,打开CompilerCompiler面板设置页面板设置页。设置为自动编译 1.3 单元测试与热部署热部署 使用快捷键使用快捷键“Ctrl+Shift+AltCtrl+Shift+Alt+/+/”打开打开Main
16、tenanceMaintenance选项框选项框,选中并选中并打打开开RegistryRegistry页面页面。指定IDEA工具在程序运行过程中自动编译 IDEA中热部署设置 1.3 单元测试与热部署 热部署 启动启动chapter01chapter01项目,通过浏览器访问项目,通过浏览器访问http:/localhost:8080/hellohttp:/localhost:8080/hello 热部署测试 1.3 单元测试与热部署 热部署修改修改类类HelloControllerHelloController中的请求处理方法中的请求处理方法hello()hello()的返回值的返回值,刷新浏
17、览器。,刷新浏览器。热部署测试 1.4 Spring Boot 原理分析 Spring Boot 依赖管理Spring Boot 依赖管理spring-boot-starter-parent依赖spring-boot-starter-web依赖 1.4 Spring Boot 原理分析 Spring Boot 依赖管理1、spring-boot-starter-parent依赖org.springframework.bootspring-boot-starter-parent2.1.3.RELEASEspring-boot-starter-parent是通过标签对一些常用技术框架的依赖文件进行
18、了统一版本号管理。1.4 Spring Boot 原理分析 Spring Boot 依赖管理2、spring-boot-starter-web依赖 org.springframework.boot spring-boot-starter-webspring-boot-starter-web依赖启动器的主要作用是提供Web开发场景所需的底层所有依赖文件,它对Web开发场景所需的依赖文件进行了统一管理。1.4 Spring Boot 原理分析 Spring Boot 自动配置Spring Boot应用的启动入口是SpringBootApplication注解标注类中的main()方法;Spring
19、BootApplication能够扫描Spring组件并自动配置Spring Boot。SpringBootApplication注解是一个组合注解,包含SpringBootConfiguration、EnableAutoConfiguration、ComponentScan三个核心注解Spring Boot自动配置的实现 1.4 Spring Boot 原理分析Spring Boot 执行流程Spring Boot 的执行流程主要分为两步:初始化Spring Application实例 初始化Spring Boot 项目启动 1.4 Spring Boot 原理分析 Spring Boot
20、执行流程(1)初始化Spring Application实例获取所有可用的应用初始化器类获取所有可用的应用初始化器类ApplicationContextInitializerApplicationContextInitializer获取所有可用的监听器类获取所有可用的监听器类ApplicationListenerApplicationListenerthis.mainApplicationClassthis.mainApplicationClass=this.deduceMainApplicationClassthis.deduceMainApplicationClass()()查看查看classpathclasspath类路径类路径webApplicationTypewebApplicationType下是否存在某个特征类下是否存在某个特征类 1.4 Spring Boot 原理分析 Spring Boot 执行流程(2)初始化Spring Boot项目启动获取监听器并运行运行监听器启动配置好的应用上下文对项目环境进行预设置对项目应用上下文ApplicationContextt的预配置调用项目中自定义执行器使监听器持续运行配置好的应用上下文