# springboot-experiment01 **Repository Path**: classmate-he/springboot-experiment01 ## Basic Information - **Project Name**: springboot-experiment01 - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2021-04-05 - **Last Updated**: 2021-08-31 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # **实验一 使用Spring Boot构建应用程序** ## 一、实验目的 1. 掌握使用IntelliJ IDEA创建Spring Boot应用程序的方法; 2. 了解spring-boot-starter-parent的配置内容; 3. 掌握如何利用Starter扩展Spring Boot应用程序的功能; 4. 掌握如何配置Starter; 5. 掌握如何通过属性文件定制Spring Boot应用程序的初始化参数; 6. 掌握使用Spring Boot编写简单的单元测试; 7. 了解Spring Boot应用程序的Fat Jar文件; 8. 掌握Markdown轻量级标记语言编写README.md文件。 ## 二、**实验环境** 1. JDK 1.8或更高版本 2. Maven 3.6+ 3. IntelliJ IDEA ## 三、**实验任务** 1. 通过IntelliJ IDEA的Spring Initializr向导创建Spring Boot项目; 2. 添加两个功能模块:spring MVC、lombok; 3. 添加阿里云镜像仓库作为项目maven仓库; 4. 解释项目pom.xml文件中主要标签的意义; parent : 指定父pom groupId :代表公司组织的名称,一般为公司域名的倒写 artifictId :代表该项目全局唯一id version :该项目的版本 properties :用于声明一些变量 dependencies :依赖的根元素,内容具体为依赖的三个坐标,如groupId、artifactId 和version build :构建标签 5. 配置jetty或undertow作为Spring Boot应用程序的默认Servlet容器; 6. 配置Gson作为Spring Boot应用程序的默认JSON MessageConverter;(可选) 7. 修改Spring Boot应用程序启动时的Banner;(新增-2020-10-5)) 8. 添加一个简单的Spring Mvc控制器组件,用于测试,如下图: 因为我电脑中的8080端口已被占用,所以我在此就已改变端口号为9000 ​ 9.定义一个CommandLineRunner的Bean,用于检查Spring Boot应用程序启动完成后在Spring IoC容器中注册的所有Bean。如下图: ​ 10.编写一个简单的单完测试。如下图: **说明:** MockMvc来自Spring Test模块,它可以让您通过一组便捷的构建器类将HTTP请求发送到DispatcherServlet中,并对结果进行断言。 注意,这里使用@AutoConfigureMockMvc和@SpringBootTest。 **1)@SpringBootTes**t 使用完@SpringBootTest后,将创建整个应用程序上下文(加载所有配置类的Bean)。 @SpringBootTest注解告诉SpringBoot去寻找一个主配置类(例如带有@SpringBootApplication的配置类),并使用它来启动Spring应用程序上下文。SpringBootTest加载完整的应用程序并注入所有可能的bean,因此速度会很慢。 **2)@AutoConfigureMockMvc** Spring在该层处理传入的HTTP请求并将其交给您的控制器。这样,几乎使用了整个堆栈,并且将以与处理真实HTTP请求完全相同的方式调用您的代码,而无需启动Servlet容器就可以进行测试。使用@AutoConfigureMockMvc注解后,则会在spring应用上下文创建MockMvc实例。在测试用例中可以注入MockMvc实例模拟http请求,MockMvc实例会把http请求转交相应的controller处理,而且不需要启动tomcat等Servlet容器。 **3)@WebMvcTest 与 @MockBean** 还有另一种替代方法是使用@WebMvcTest注解,它要求Spring Boot仅创建上下文的Web层(仅实例化controller组件),其它组件需要自己手动Mock(如:使用@MockBean)。这样就可以大大减少单元测试时初始化Spring上下文时加载的Bean数量,加快启动、测试Spring应用程序的速度。 与@WebMvcTes功能相类似的还有@DataJpaTest与@JsonTest。 无论使用哪种方法,Spring Boot都会自动尝试查找应用程序的主应用程序类,但是如果您要构建其他内容,则可以覆盖它或缩小它的范围。 **推荐阅读**:[Spring Boot官方基于Web的单元测试教程](https://spring.io/guides/gs/testing-web/) ​ 11.使用IntelliJ IDEA的HTTP Client工具测试控制器端口; ​ 13.在命令行中使用spring官方提供的mave插件 spring-boot 运行Spring Boot应用程序,并把嵌入式Servlet容器的默认端口8080改为9090; ​ 14.在属性文件中配置Spring Boot应用程序以debug模式运行。 ​ 15.在命令行中编译、打包Spring Boot应用程序。 ​ 16.在命令行中使用java命令运行Spring Boot应用程序的Jar文件。 ​ 17.在命令行中使用java命令运行Spring Boot应用程序的Jar文件,带参数改变嵌入式Servlet容器的默认端口8080改为9090。