TYUT-企业级开发教程-第一章
第一章
Springboot背景
注意第一句话,Spring boot框架本身并不提供Spring框架的核心特性和扩展功能,并且在开发中使用约定优先于配置的思想来摆脱Spring的手动配置。
Spring Boot的特性
- 可以快速构建独立的Spring应用
- 直接嵌入Tomcat,Jetty和Undertow等Web容器,无需部署WAR文件
- 提供固化的“Starter"依赖,简化构建配置
- 提供了大量的自动化类或第三方类
- 提供生产就绪功能
- 无需生成配置代码和XML配置文件
Spring Initalizr的注意点: 确保在联网时,构建项目
Springboot的层级结构 用Spring Initalizr创建的
创建SpringBoot项目的方式
两者的对比:
使用 Spring Initializr 方式构建 Spring Boot 项目非常便捷,但是如果当前主机不能联网
的话,就无法自动下载项目所需的一些组件和依赖,导致这种方式无法正常使用。
SpringBoot 项目可以基于 Maven 构建,如果构建项目所需要使用的组件和依赖在本地 Maven
仓库中已经存在,则无须联网也可以构建 Spring Boot 项目。
SpringBoot的原理解析
起步依赖
起 步 依 赖 本 质 上 是 一 个 Maven 项 目 对 象 模 型 , 该 模 型 中 定 义 了 对 其 它 库 的 传 递 依赖, Spring Boot 提供了众多起步依赖来降低项目依赖的复杂度。
在 Spring Boot 入门案例中,项目的 pom.xml 文件中主要引入了两个起步依赖,分别是
spring-boot-starter-parent 和 spring-boot-starter-web
spring-boot-starter-parent
spring-boot-starter-parent 中定义了很多常见技术的版本信息,组合成一套最优搭配的技术版本
spring-boot-starter-parent 和普通的 starter 都使 Spring Boot 项目简化了配置,但是他们两个的
功能却不相同。
spring-boot-starter-parent :定义了很多个常见组件或框架的依赖版本号,组合成一套最优搭配
的技术版本,更便于统一管理依赖的版本,且减少了依赖的冲突。
普通的 starter :在坐标中定了若干个坐标,减少依赖配置的代码量
spring-boot-starter-web 依赖
spring-boot-starter-web 就是使用Spring MVC 构建 Web 应用程序的启动器
自动配置
Spring项目打包和运行
什么为打包:
在实际开发中,通常项目完成以后,不会将项目源代码公布给所有人,而是将其项目依赖的组件组织成一个可执行文件分发到目标系统运行和交付给其他人使用,这个过程被称为打包。项目打包之后可以在其他的环境中方便运行。
打包的原因:
- 在实际开发中,通常项目完成以后,不会将项目源代码公布给所有人,将其项目依赖的组件组织成一个可执行文件分发到目标系统运行和交付给其他人使用
- 项目打包之后可以在其他的环境中方便运行。
打包的两种方式
1.打包为JAR类型
一个可执行的 JAR 包可以由 JVM 直接执行而无须事先提取文件或者设置类路径。对此可以直接使用,Java 命令运行可执行的 JAR 包。
命令
java –jar JAR 包名称
2:打包为WAR类型
两者的区别:
虽然通过 Spring Boot 内嵌的 Tomcat 可以将项目打成 JAR 包后直接运行,但每个 JAR 包中都会包含独立的 Web 容器,对服务器的使用消耗会比较大。当想要在一个 Web 容器中运行多个项目时,可以把每个项目打包成一个 WAR 包,然后部署到 Web 容器中运行。
WAR对应就是一个WEB容器对应多个项目
JAR对应的就是每个JAR包中都会有独立的WEB容器
第一章题目
- Spring Boot框架在开发过程中大量使用 约定优先与配置 的思想来摆脱各种复杂的手动配置。
- Spring Boot 2.7.6官方声明支持的项目构建工具包括有 Maven 和Gradle。
- @SpringBootApplication注解内部包含的核心注解有 @SpringBootConfiguration 、@EnableAutoConfiguration、@ComponentScan。
- Spring Boot启动类中调用SpringApplication类的 run() 方法来创建Spring容器。
- Spring Boot项目中,进行Web环境模拟测试包含 启动web环境 和发送Web请求两部分
- 判断题
- Spring Boot是替代Spring框架的解决方案。( X) 是提升Spring开发者体验的工具
- 使用Maven方式构建Spring Boot项目必须处于联网状态,否则会创建失败。(X )
- Spring Initializr创建项目才必须处于联网状态,Maven有本地仓库不联网也可以
- Spring Boot官方针对所有场景开发的技术框架都提供了启动器。( X)
- 对于一些第三方中间件就没有提供,像MYBAITS,DRUID等等
- DEFINED_PORT为webEnvironment属性的默认值。(X )
- 在Spring Boot项目中加入spring-boot-devtools热部署依赖启动器后重启项目即可生效。(X)
- 还需要做其他配置
三、选择题
1. 下列选项中,关于Spring Boot概述错误的是(C)。
A.使用Spring Boot开发程序时,几乎可以实现开箱即用。
B.Spring Boot框架本身并不提供Spring框架的核心特性以及扩展功能。
C.Spring Boot是替代Spring框架的解决方案。
D.Spring Boot集成了大量常用的第三方库配置。
解析:
Springboot本身并不提供Spring框架内的核心特性和扩展功能,只是是Spring变得更简单,Spring Boot并不是是替代Spring框架的解决方案,而是与开发者紧密结合的工具
2.下列选项中,对于Spring Boot自动装配时对应注解的作用描述错误的是()。
A.@SpringBootConfiguration标注当前类是一个配置类。
B.@EnableAutoConfiguration可以关闭Spring Boot的自动配置。
C.@ComponentScan注解是一个组件包扫描器。
D.被@SpringBootApplication标注的类可以被扫描到Spring的IoC容器中。
解析:
@EnableAutoConfiguration 可以实现Springboot的自动配置
3.下列选项中,对于Spring Boot应用程序启动器描述错误的是()。
A.spring-boot-starter-parent为核心启动器,常被作为父依赖。
B.spring-boot-starter-web使用SpringMVC构建Web。
C.spring-boot-starter-test提供Logging相关的日志功能。
D.spring-boot-starter-jdbc结合JDBC和HikariCP连接池的启动器。
解析:
spring-boot-starter-test支持常规的测试依赖,JUIT,Spring-test模块
Spring-boot-starter-logging提供Logging相关的日志功能
4.下列选项中,对于@SpringBootTest注解webEnvironment属性的值描述错误的是()。
A.MOCK为webEnvironment属性的默认值。
B.DEFINED_PORT加载一个EmbeddedWebApplicationContext并提供一个真正的servlet环境。
C.RANDOM_PORT会使用随机端口作为Web服务器端口。
D.NONE会使用SpringApplication加载ApplicationContext,但不启动Web环境。
解析:需要部署在TOMACAT中,使用自定义端口
5.下列选项中,关于Spring Boot项目以War包方式进行打包部署的说法错误的是()。
A.要使用<packaging>标签将Spring Boot项目打包方式修改为war。
B.使用<scope>out</scope>将该服务器声明为外部out。
C.使用外置Tomcat时,默认启动类需要继承SpringBootServletInitiailzer类,并重写configure()方法。
可以使用IDEA的Maven工具将Spring Boot项目打包为WAR包
解析:应该为Provide