[SSM]SpringBoot

SpringBoot简介

入门案例

回顾SpringMVC开发的步骤

  1. 创建工程,并在 pom.xml 配置文件中配置所依赖的坐标

  1. 编写 web3.0 的配置类

  1. 编写 SpringMVC 的配置类

  1. 编写 Controller 类

从上面的 SpringMVC 程序开发可以看到,前三步都是在搭建环境,而且这三步基本都是固定的。 SpringBoot 就是对这三 步进行简化了

SpringBoot是由Pivotal团队提供的全新框架,其设计目的是用来简化Spring应用的初始搭建以及开发过程

  1. 创建新模块,选择Spring初始化,并配置模块相关基础信息

  1. 选择当前模块需要使用的技术集

  1. 开发控制器类

  1. 运行自动生成的Application类

做完 SpringBoot 的入门案例后,接下来对比一下 Spring 程序和 SpringBoot 程序。如下图

基于SpringBoot官网创建项目

SpringBoot项目快速启动

  1. 将 SpringBoot 工程打成 jar 包,该 jar 包运行不依赖于 Tomcat 和 Idea 这些工具也可以正常运行, 只是这个 jar 包在运行过程中连接和我们自己程序相同的 Mysql 数据库即可。
  2. SpringBoot 工程默认在pom.xml 中配置了如下插件

  1. 所以我们只需要使用 Maven 的 package 指令打包就会在 target 目录下生成对应的 jar 包。
  2. 进入 jar 包所在位置, 运行jar包

SpringBoot概述

SpringBoot 程序的优点

  1. 自动配置。 Spring 程序配置繁琐的问题
  2. 起步依赖。这个是用来解决 Spring 程序依赖设置繁琐的问题
  3. 辅助功能(内置服务器,...)。启动 SpringBoot 程序时使用 SpringBoot 内置的服务器

SpringBoot起步依赖

我们使用 `Spring Initializr` 方式创建的 `Maven` 工程的的 `pom.xml` 配置文件中自动生成了很多包含 `starter` 的依赖,如下图

  1. 这是指定了父工程, 可以理解为模板工程

  • 进入到该父工程中,在该工程中我们可以看到配置内容结构如下图所示

  • properties 标签中定义了各个技术软件依赖的版本,我们就不用自己指定版本了。
  • 在 properties 中我们找 servlet 和 mysql 的版本如下图

  • dependencyManagement 标签是进行依赖版本锁定;如果我们工程需要那个依赖只需要引入依赖的 groupid 和 artifactId 不需要定义 version。
  • 而 build 标签中也对插件的版本进行了锁定,如下图

  1. springboot集成web开发的起步依赖

  • 进入到该依赖,查看 pom.xml 的依赖会发现它引入了如下的依赖

  • 里面的引入了 spring-web 和 spring-webmvc 的依赖,这就是为什么我们的工程中没有依赖这两个包还能正常使用 springMVC 中的注解的原因
  • 而依赖 spring-boot-starter-tomcat ,从名字基本能确认内部依赖了 tomcat,所以我们的工程才能正常启动。
  • 起步依赖极大简化了我们的依赖配置

SpringBoot程序主启动类

创建的每一个 SpringBoot 程序时都包含一个类似于下面的类,我们将这个类称作引导类

  • SpringBoot 在创建项目时,采用jar的打包方式
  • SpringBoot 的引导类是项目的入口,运行 main 方法就可以启动项目
  • 因为我们在pom.xml 中配置了 spring-boot-starter-web 依赖, 运行 main 方法就可以使用内置 tomcat 启动咱们的工程

切换web服务器

现在我们启动工程使用的是 tomcat 服务器,那能不能不使用 tomcat 而使用 jetty 服务器。要切换 web 服务器就需要将默认的 tomcat 服务器给排除掉,怎么排除呢? 使用exclusion 标签

  1. Jetty比Tomcat更轻量级,可扩展性更强(相较于Tomcat),谷歌应用引擎(GAE)已经全面切换为Jetty
  2. 对于我们来说, 开发项目很简单, 需要什么技术就把技术对应的起步依赖加到pom文件中, 如果要切换技术也简单, 先排除要替换的依赖, 再引入新的依赖, 我们就可以更专注于业务开发

基础配置

配置文件格式

SpringBoot提供了多种属性配置方式

  1. application.properties

  1. application.yml

  1. application.yaml

SpringBoot配置文件加载顺序(了解)

application.properties > application.yml > application.yaml

  1. SpringBoot核心配置文件名为application
  2. SpringBoot内置属性过多,且所有属性集中在一起修改,在使用时,通过提示键+关键字修改属性

在配合文件中如果没有提示,可以使用以下方式解决

yaml

YAML (YAML Ain't Markup Language),一种数据序列化格式

优点:

  • 容易阅读
  • 容易与脚本语言交互
  • 以数据为核心,重数据轻格式

YAML文件扩展名

  • ·yml(主流)
  • .yaml

yaml语法规则

  1. 大小写敏感
  2. 属性层级关系使用多行描述,每行结尾使用冒号结束
  3. 使用缩进表示层级关系,同层级左侧对齐,只允许使用空格(不允许使用Tab键)
  4. 属性值前面添加空格 (属性名与属性值之间使用冒号+空格作为分隔)
  5. # 表示注释
  6. 核心规则: 数据前面要加空格与冒号隔开

yaml数组数据

数组数据在数据书写位置的下方使用减号作为数据开始符号,每行书写一个数据,减号与数据间空格分隔

yaml数据读取

使用@Value读取单个数据,属性名引用方式: ${一级属性名.二级属性名...}

封装全部数据到Environment对象

自定义对象封装指定数据

如果自定义对象封装数据, 出现警告, 可以添加该依赖解决

多环境启动

以后在工作中,对于开发环境、测试环境、生产环境的配置肯定都不相同,比如我们开发阶段会在自己的电脑上安装 mysql ,连接自己电脑上的 mysql 即可,但是项目开发完毕后要上线就需要该配置,将环境的配置改为线上环境的。

来回的修改配置会很麻烦,而 SpringBoot 给开发者提供了多环境的快捷配置,需要切换环境时只需要改一个配置即可。不 同类型的配置文件多环境开发的配置都不相同,接下来对不同类型的配置文件进行说明

在 application.yml 中使用 --- 来分割不同的配置,内容如下

最新用来起名字的配置项是

properties文件多环境启动

  1. 主启动配置文件application.properties

  1. 环境分类配置文件application-pro.properties

  1. 环境分类配置文件application-dev.properties

  1. 环境分类配置文件application-test.properties

带参数启动SpringBoot

参数加载优先顺序

  1. 参看: https://docs.spring.io/spring-boot/redirect.html?page=spring-boot-features#bootfeatures-external-config
  2. 如果使用了多种方式配合同一个配置项,优先级高的生效。

Maven与SpringBoot多环境兼容

  1. Maven中设置多环境属性

  1. SpringBoot中引用Maven属性

  1. 对资源文件开启对默认占位符的解析

  1. Maven打包加载到属性,打包顺利通过

配置文件分类

我们开发完毕后需要测试人员进行测试,由于测试环境和开发环境的很多配置都不相同,所以测试人员在运 行我们的工程时需要临时修改很多配置,如下

针对这种情况, SpringBoot 定义了配置文件不同的放置的位置;而放在不同位置的优先级时不同的。

SpringBoot 中4级配置文件放置位置:

作用:

  1. 1级与2级留做系统打包后设置通用属性
  2. 3级与4级用于系统开发阶段设置通用属性

在这里我们只演示不同级别配置文件放置位置的优先级。

  1. SpringBoot 工程,目录结构如下

  1. 在 resources 下创建一个名为 config 的目录,在该目录中创建 application.ym1 配置文件,而在该配置文件中将端口号设置为 81,内容如下

  1. 而在 resources 下创建的 application.ym] 配置文件中并将端口号设置为 80,内容如下

  1. 运行启动引导类,可以在控制台看到如下日志信息

  1. 通过这个结果可以得出类路径下的 config 下的配置文件优先于类路径下的配置文件
  2. 要验证4级,按照以下步骤完成
  3. 将工程打成 jar 包, 在硬盘上找到 jar 包所在位置

  1. 在 jar 包所在位置创建 config 文件夹,在该文件夹下创建 application.yml 配置文件,将端口号设置为 82 , 然后运行程序, 运行后日志信息如下

  1. 通过这个结果可以得出file: config 下的配置文件优先于类路径下的配置文件

整合第三方技术

整合junit

回顾 Spring 整合 junit

使用 @ RunWith 注解指定运行器,使用 @ContextConfiguration 注解来指定配置类或者配置文件。

SpringBoot 整合 junit 特别简单,分为以下三步完成

  1. 在测试类上添加 SpringBootTest 注解
  2. 使用 @Autowired 注入要测试的资源
  3. 定义测试方法进行测试

@SpringBootTest注解

  1. 位置: 测试类定义上方
  2. 作用: 设置JUnit加载的SpringBoot启动类
  3. 范例:

  1. 相关属性
  • classes: 设置SpringBoot启动类
  • 如果测试类在SpringBoot启动类的包或子包中,可以省略启动类的设置,也就是省略classes的设定
  • 如果测试类所在包和启动类所在包不一致, 就要通过classes属性指定SpringBoot启动类

  • 为什么测试类和启动类的包要一致呢?

JUnit会把SpringBoot启动类作为Spring配置文件加载, 如果包不一致, 就找不到了

整合mybatis

  1. 创建新模块,选择Spring初始化,并配置模块相关基础信息

  1. 选择当前模块需要使用的技术集(MyBatis、MySQL)

  1. 设置数据源参数

  1. 定义数据层接口与映射配置

  1. 测试类中注入dao接口,测试功能

实现ssm整合

SpringBoot 到这就已经学习完毕,接下来我们将学习 SSM 时做的三大框架整合的案例用 SpringBoot 来实现一下。我们完成这个案例基本是将之前做的拷贝过来,修改成 SpringBoot 的即可,主要从以下几部分完成

  1. pom.xml
  • 配置起步依赖,必要的资源坐标(druid)
  1. application.yml
  • 设置数据源、端口等
  1. 配置类
  • 全部删除
  1. dao
  • 设置 @Mapper
  1. 测试类
  2. 页面
  • 放置在resources目录下的static目录中

创建 SpringBoot 工程,在创建工程时需要勾选 web、 mysql、 mybatis,工程目录结构如下

由于我们工程中使用到了 Druid ,所以需要导入 Druid 的坐标

代码拷贝

需要修改的内容如下:

  • config 包下的是配置类可以直接删除
  • dao 包下的接口中添加 @Mapper 注解
  • BookServiceTest 测试需要改成 SpringBoot 格式

配置文件

在 a pplication.yml 配置文件中需要配置如下内容

静态资源

在 SpringBoot 程序中是没有 静态资源需要放在 webapp 目录的,那么在 SpringBoot 程序中静态资源需要放在什么位置呢? resources 下的 static 下,如下图所示

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/1124499.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MATLAB代码:基于二阶锥优化的电气综合能源系统多目标无功优化(配网设备模型及网损优化方案研究

MATLAB代码:基于二阶锥优化的电气综合能源系统多目标无功优化 关键词:配电网 无功优化 二阶锥 电气综合能源系统 参考文档:《含高比例光伏的配电网有功-无功功率多目标协调优化》参考部分配电网设备模型,非完全复现,…

数据库性能测试最佳实践

在当今数据驱动的时代,数据库作为企业应用的核心组件,其性能直接影响系统稳定性、用户体验和业务连续性。据统计,性能瓶颈导致的应用故障占比高达40%以上(源自2025年Gartner报告),而数据库往往是关键瓶颈点…

【必学收藏】智能体是什么?深入解析ReAct范式,助力AI开发者快速上手大模型智能体技术

本文解析AI智能体概念及ReAct范式,介绍不同来源对智能体的定义,详细阐述ReAct的核心思想——将推理与行动交错联合,形成Thought->Act->Observe工作流程。通过案例演示ReAct应用,探讨工具技术发展路径,总结智能体…

MSRP协议:即时通信中的多媒体传输基石

目录 一、协议起源与设计定位 二、协议架构与核心机制 2.1 传输层依赖与连接管理 2.2 消息格式与分片机制 2.3 状态报告与错误处理 三、协议优势与应用场景 3.1 突破传统限制的传输能力 3.2 灵活的拓扑支持 3.3 与SIP的深度协同 四、结语 在数字化通信飞速发展的今天…

腾讯云渠道商:如何在CVM 上手动搭建 LNMP 环境?

一、引言LNMP(LinuxNginxMySQLPHP)作为主流 Web 服务环境,在腾讯云 CVM 上部署仅需简单四步。本文避开复杂配置,提供极简搭建方案,助您快速构建网站运行基础。二、核心步骤1.系统准备登录 CVM 控制台创建 CentOS 实例S…

2026亲测成都有机肥供应厂家推荐

【有机肥】哪家好:专业深度测评在现代农业中,有机肥的使用越来越受到重视。为了帮助种植户选择合适的有机肥供应商,本文将对成都地区的有机肥供应商进行详细测评,重点推荐盖尔盖司。1. 测评背景与目的随着环保意识的增强和农业可持…

巴耶赫利俄语网站开发

巴耶赫利(bayeheli.com) 是一家专业的俄语网站开发团队,专注于为中国企业提供俄语市场数字化解决方案,帮助中国品牌出海俄罗斯。 核心服务 1. 俄语网站建设 定制化设计:根据俄罗斯用户习惯和文化背景设计界面 响应式布局:适配…

收藏!字节员工转岗大模型岗拿11W月薪,传统开发的AI风口逆袭指南

最近科技圈一个话题彻底火了——一位字节跳动的传统开发工程师,成功跨界转型算法大模型岗位后,直接在社交平台晒出了月薪11万的工资条。帖子一经发出,评论区瞬间被“羡慕哭了”“这波转型太值了”“我也想转”的留言刷屏,满屏的羡…

【异常】Antigravity工具提示One moment, the agent is currently loading...

一、报错内容二、报错说明 这是Antigravity工具的操作界面,当前处于智能代理(Agent)的加载状态,以下是其核心信息: 工具定位:Antigravity属于AI辅助开发类工具,核心是通过智能代理(A…

收藏!Agent全面爆发!万字长文吃透上下文工程(小白程序员入门必备)

1、 Agent全面爆发的前夜:上下文成为核心变量 1.1 从Chatbot到Agent:能力形态的本质跃迁 在大语言模型(LLM)大规模落地到实际产品之前,Chatbot(聊天机器人)是最主流的应用形态。这种形态的工作逻…

基于双层优化模型的电动汽车日前-实时两阶段市场竞标策略研究报告

MATLAB代码:基于双层优化的电动汽车日前-实时两阶段市场竞标 关键词:日前-实时市场竞标 电动汽车 双层优化 编程语言:MATLAB平台 参考文献:店主自编参考文献,可联系我查看 内容简介:代码主要做的是电动汽…

【高录用、快见刊】第二届能源工程与污染治理国际学术会议(EEPC 2026)

第二届能源工程与污染治理国际学术会议(EEPC 2026)将于2026年3月13-15日在大连召开,这是一个集中探讨全球能源工程与污染治理领域创新和挑战的国际学术平台。旨在汇集全球领域内的学者、研究人员、政策制定者以及业界领导者,共同探…

干货_常用提权辅助工具推荐

干货 | 常用提权辅助工具推荐 一、使用Windows-Exploit-Suggester解析systeminfo 1、简介 Windows-Exploit-Suggester是受Linux_Exploit_Suggester的启发而开发的一款提权辅助工具,用python开发而成,通过比对systeminfo生成的文件,从而发现…

外卖大军:“一口热饭”的需求引发的一系列多线程社会问题与困局

在现代都市的日常图景中,一个再平常不过的动作——点开手机,为一份即将送达的“热饭”支付费用——已成为数亿人的习惯。这份对即时温饱的朴素追求,却如同投入平静湖面的一颗石子,激荡起一连串深远而复杂的涟漪,最终汇…

学服务器训练AI模型:5步路径助力高效入门

想用服务器训练AI模型不少AI开发者都会陷入“看会操作、动手就崩”的困境:记混服务器连接命令、环境配置反复报错、训练时显存不足无措——纯视频学习只给流程演示,缺逻辑拆解和实操反馈,很难真正落地。我们需要通过视频内容快速提炼视频核心…

人工电销和AI机器人功能的根本区别是什么

“拨号两小时,沟通五分钟”“空号拒接占一半,有效线索难寻觅”“高频外呼就封号,业务中断心发慌”…… 这些电销困境,是不是正困扰着你的团队? 传统外呼模式下,人工效率低、封号风险高、数据管理乱三大痛点…

是德科技N9020B安捷伦N9020A N9030A频谱分析仪

N9020B是Keysight(是德科技)生产的一款高性能MXA系列信号分析仪,专为无线通信和射频测试设计,支持10 Hz至50 GHz频率范围,最高160 MHz分析带宽。 产品概述 N9020B是Keysight(原安捷伦)推出的‌M…

HP8920A安捷伦8921A 8920B综合测试仪对讲机测试仪

HP惠普8920A可选的合成频谱分析仪可测量400kHz~1GHz的信号,可变间距为5kHz~1GHz(全间距).显示分辩力可在每格1、2或10dB(分贝)之间进行选择。可调光标自动读出频率和幅度或者相对于基准而言的相对幅度。频谱分析仪所包括的跟踪发生…

风靡TikTok,影响超800万辆汽车,原因竟是一根USB 线?

风靡TikTok,影响超800万辆汽车,原因竟是一根 USB 线? Bleeping Computer 网站披露,韩国汽车制造商现代(Hyundai)和起亚(Kia)给旗下约 830 万辆汽车进行了防盗安全更新(预…

什么是Keychain

文章目录为什么需要keychainkeychain是由哪些部分组成keychain是如何工作的keychain的典型应用Keychain中的Key,不是算法,也不是密钥,而是一套加密和认证的规则。keychain通过对它拥有的一系列Key进行集中控制和灵活管理,为应用程…