当前位置: 首页 > ai >正文

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容器 

第一章题目

  1. Spring Boot框架在开发过程中大量使用 约定优先与配置    的思想来摆脱各种复杂的手动配置。
  2. Spring Boot 2.7.6官方声明支持的项目构建工具包括有  Maven   和Gradle。
  3. @SpringBootApplication注解内部包含的核心注解有  @SpringBootConfiguration 、@EnableAutoConfiguration、@ComponentScan。

      

  1. Spring Boot启动类中调用SpringApplication类的  run()   方法来创建Spring容器。
  2. 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

http://www.xdnf.cn/news/7081.html

相关文章:

  • Science Robotics 封面论文:基于形态学开放式参数化的仿人灵巧手设计用于具身操作
  • 如何完美安装GPU版本的torch、torchvision----解决torch安装慢 无法安装 需要翻墙安装 安装的是GPU版本但无法使用的GPU的错误
  • C++:⾯向对象的三⼤特性
  • Java正则表达式:从基础到高级应用全解析
  • ColorAid —— 一个面向设计师的色盲模拟工具开发记
  • 超越想象:利用MetaGPT打造高效的AI协作环境
  • Vue 3 中使用 md-editor-v3 的完整实例markdown文本
  • Pandas 构建并评价聚类模型② 第六章
  • 实现菜谱二级联动导航
  • ubuntu防火墙命令和放行ssh端口
  • 03 Nginx日志格式及可视化
  • Estimation(估算):业务分析师的“不确定性对抗术”
  • LeetCode Hot100刷题——除自身以外数组的乘积
  • 【设计模式】- 行为型模式2
  • 时序数据库、实时数据库与实时数仓:如何为实时数据场景选择最佳解决方案?
  • 【Linux】第十八章 调优系统性能
  • 结构体对齐三大法则
  • UART、SPI、IIC复习总结
  • 获取Class的方式有哪些?
  • 蓝桥杯19681 01背包
  • 医学影像开发的开源生态与技术实践:从DCMTK到DICOMweb的全面探索
  • NC61 两数之和【牛客网】
  • 写spark程序数据计算( 数据库的计算,求和,汇总之类的)连接mysql数据库,写入计算结果
  • COCO数据集神经网络性能现状2025.5.18
  • 【数据结构】2-3-4 单链表的建立
  • 大学量化投资课程
  • C 语言学习笔记(函数)
  • 华为OD机试真题——最小循环子数组 (2025B卷:100分)Java/python/JavaScript/C/C++/GO最佳实现
  • 2025/5/18
  • 非线性1 修改