### 4. 解释项目pom.xml文件中主要标签的意义;创建Spring Boot项目;
- **parent:** 所继承的父项目的坐标。如果项目中没有规定某个元素的值,那么父项目中的对应值即为项目的默认值。 坐标包括group ID,artifact ID和 version
- **artifactId:** 被继承的父项目的构件标识符
- **groupId:** 被继承的父项目的全球唯一标识符
- **version:** 被继承的父项目的版本
- **relativePath:** 父项目的pom.xml文件的相对路径,默认值是../pom.xml。Maven首先在构建当前项目的地方寻找父项目的pom,其次在文件系统的这个位置(relativePath位置),然后在本地仓库,最后在远程仓库寻找父项目的pom
- **properties:** 自定义属性,一般用于依赖或配置统一版本的管理
- **plugins**:使用的插件列表
- **repositories:** 发现依赖和扩展的远程仓库列表
- **exclusions:** 当传递依赖时, 从依赖构件列表里,列出被排除的依赖构件集。即告诉maven你只依赖指定的项目,不依赖项目的依赖,此元素主要用于解决版本冲突问题。
- **scope**:依赖范围。在项目发布过程中,帮助决定哪些构件被包括进来
- **build:** 构建项目所需要的信息
### 5. 配置jetty或undertow作为Spring Boot应用程序的默认Servlet容器;
```
org.springframework.boot
spring-boot-starter-web
org.springframework.boot
spring-boot-starter-tomcat
org.springframework.boot
spring-boot-starter-jetty
```
### 6. 添加一个简单的Spring Mvc控制器组件,用于测试:
```$xslt
@RestController
public class controller {
@ResponseBody
@RequestMapping("/")
public String index(){
// return "Hello,world!";
return "Hello,world!";
}
```
>说明:该类被标记为@RestController,这意味着Spring MVC可以使用它来处理Web请求。@RequestMapping映射‘/’到该类的index()方法。从浏览器调用或在命令行上使用curl时,该方法返回纯文本。那是因为@RestController是复合注解,它将@Controller和@ResponseBody组合在一起,这两个注解会使Spring Mvc处理Web请求返回的是数据而不是视图。
### 7.定义一个CommandLineRunner的Bean,用于检查Spring Boot应用程序启动完成后在Spring IoC容器中注册的所有Bean。如下图:
```$xslt
@Bean
public CommandLineRunner commandLineRunner(ApplicationContext ctx){
return args -> {
System.out.println("SpringBoot注册的所有Been:");
String[] beanNames = ctx.getBeanDefinitionNames();
Arrays.sort(beanNames);
Arrays.stream(beanNames).forEach(System.out::println);
};
}
```
+ 打印所有bean的类名:

所有Bean
>说明:
Spring Boot应用程序初始化完成后,会自动回调所有CommandLineRunner类型的Bean的run方法。
实验中,我们自定义一个CommandLineRunner,检查由您的应用程序创建或由Spring Boot自动添加的所有bean,并对它们进行排序并打印出来。
###8. 编写一个简单的单完测试。如下图:
>+ perform : 执行一个RequestBuilder请求,会自动执行SpringMVC的流程并映射到相应的控制器Controller执行处理。
>+ accept:接收响应内容的序列化的格式,"MediaType.APPLICATION_JSON"表示接收JSON数据格式
>+ andExpect: 添加RequsetMatcher验证规则,验证控制器执行完成后结果是否正确,或者说是结果是否与我们期望(Expect)的一致。这里使用MockMvcResultMatchers.jsonPath来验证返回的json格式的对象是否符合期望
>+ andDo: 添加ResultHandler结果处理器,比如调试时打印结果到控制台,这里使用了print()
+ 当接收的Json数据与期望不一致,测试失败:

测试失败
>说明:
MockMvc来自Spring Test模块,它可以让您通过一组便捷的构建器类将HTTP请求发送到DispatcherServlet中,并对结果进行断言。
注意,这里使用@AutoConfigureMockMvc和@SpringBootTest。
### 9.使用IntelliJ IDEA的HTTP Client工具测试控制器端口;

HTTP Client工具

.http脚本文件测试控制器端口
### 10.在命令行中使用spring-boot插件运行Spring Boot应用程序,并把嵌入式Servlet容器的默认端口8080改为9090;
+ 原默认端口为8080:

+ 更改端口为9090:

### 11.在属性文件中配置Spring Boot应用程序以debug模式运行。
+ debug参数默认是false,将其改为true:

Debug模式
>说明:
在Debug模式下,Spring Boot在运行时会在终端显示更多的调式信息。
### 12.在命令行中编译、打包Spring Boot应用程序。

命令行编译打包
### 13.在命令行中使用java命令运行Spring Boot应用程序的Jar文件。

命令行运行jar
### 14.在命令行中使用java命令运行Spring Boot应用程序的Jar文件,带参数改变嵌入式Servlet容器的默认端口8080改为9090。
+ 命令行优先级更高:

命令行带参更改端口号
>说明:
带参数运行jar文件,可以改变很多spring boot内置的属性。
例如:改变当前激活的属性文件:spring.profiles.active。
### 15.使用markdown标记语方编写实验报告,并生成README.md文件放在项目仓库的根目录。