(一)SpringBoot3---尚硅谷总结

目录

示例Demo:

1、我们先来创建一个空工程:

2、我们通过Maven来创建一个Module:

3、让此Maven项目继承父项目:

4、导入web开发的场景启动器

 5、创建Springboot项目的主入口程序:

6、举例测试:

7、Springboot还能够简化部署:直接打个包即可

7.1 通过Maven把应用进行打包:把项目打成可执行的jar包  

7.2 打包成功:把项目打成可执行的jar包

7.3 运行成功

8、Springboot还能够简化运维:

8.1 直接在同目录下创建一个空的配置文件,比如说我要修改端口号:

8.2 然后重新运行此jar包:端口号已经修改成功了

9、Springboot特点总结:

1. 简化整合

2. 简化开发

3. 简化配置

4. 简化部署

5. 简化运维

10、Spring Initializr 创建向导

 11、Springboot的便捷特性都依赖于这两个机制:

1、为什么导入starter-web所有相关依赖都导入进来?

2、为什么我们导入场景启动器的时候,版本号都不用写:

3、自定义版本号

3.1、直接在当前项目properties标签中声明父项目用的版本属性的key:

3.2、直接在导入依赖的时候声明版本:

4、第三方的jar包

示例Demo:

1、我们先来创建一个空工程:

2、我们通过Maven来创建一个Module:

JDK版本需要选择17以及以上,如果没有的话你就下载一个:

3、让此Maven项目继承父项目:

       所有的Springboot项目都必须继承自spring-boot-starter-parent

<!-- 所有的Springboot项目都必须继承自spring-boot-starter-parent -->
<parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>3.0.5</version>
</parent>

这里注意,如果这段代码你是复制的中文文档里面的,一定要看清楚这个版本号,中文文档上的版本号对应的版本可能根本就不存在!!!

4、导入web开发的场景启动器

<dependencies><!--web开发的场景启动器,所有和Web相关的功能就都引入进来了 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency>
</dependencies>

所有和Web相关的功能就都引入进来了: 

 5、创建Springboot项目的主入口程序:

@SpringBootApplication //这是一个SpringBoot引用
public class MainApplication {public static void main(String[] args){SpringApplication.run(MainApplication.class,args);}
}

6、举例测试:

//@ResponseBody注解用于标识一个控制器方法,
// 可以将该方法的返回值作为响应报文的响应体,响应到浏览器@RestController //等同于:@Controller + @ResponseBody
public class HelloController {@GetMapping("/hello")public String hello(){return "Hello,SpringBoot 3";}
}

@ResponseBody:注解用于标识一个控制器方法,可以将该方法的返回值作为响应报文的 

                          响应体,响应到浏览器

@RestController:复合注解

7、Springboot还能够简化部署:直接打个包即可

                加入应用打包插件:

<!-- SpringBoot官方提供的应用打包插件-->
<build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins>
</build>
7.1 通过Maven把应用进行打包:把项目打成可执行的jar包
               clean和package居然可以多选 

7.2 打包成功:把项目打成可执行的jar包

7.3 运行成功
  •    运行前记得把在idea运行的此项目停掉,要不然会有端口冲突:
  •    
  •    我们直接可以在装有JDK17+的服务器上运行了,都不需要安装tomcat(Springboot有内嵌的tomcat),直接回车:

8、Springboot还能够简化运维:

        修改配置只需在外部创建一个application.properties文件,在这个文件中修改好后,

        重新运行此jar包即可:

8.1 直接在同目录下创建一个空的配置文件,比如说我要修改端口号:

8.2 然后重新运行此jar包:端口号已经修改成功了

9、Springboot特点总结:

1. 简化整合

导入相关的场景,拥有相关的功能。场景启动器

默认支持的所有场景:Developing with Spring Boot

  • 官方提供的场景:命名为:spring-boot-starter-*
  • 第三方提供场景:命名为:*-spring-boot-starter

场景一导入,万物皆就绪

  •  springboot官方提供的应用启动器会有前缀:spring-boot-starter-***
  •  第三方提供场景:命名为:****-spring-boot-starter

2. 简化开发

无需编写任何配置,直接开发业务

3. 简化配置

application.properties

  • 集中式管理配置。只需要修改这个文件就行 。
  • 配置基本都有默认值
  • 能写的所有配置都在: Common Application Properties

4. 简化部署

打包为可执行的jar包。

linux服务器上有java环境。

5. 简化运维

修改配置(外部放一个application.properties文件)、监控、健康检查。

.....

10、Spring Initializr 创建向导

选择我们当前的springboot需要哪些场景:

利用Spring Initializr 创建的项目相对于一键创建好了整个项目结构:

 11、Springboot的便捷特性都依赖于这两个机制:


                                        依赖管理机制、自动配置机制

思考:

1、为什么导入starter-web所有相关依赖都导入进来?

  • 开发什么场景,导入什么场景启动器。
  • maven依赖传递原则。A-B-C: A依赖B,B依赖C,那么A就拥有B和C
  • 导入场景启动器。 场景启动器就会自动把这个场景的所有核心依赖jar包全部导入进来  

例如:你把web开发的场景启动器spring-boot-starter-web导入进来了,那么所有和Web相关的功能就都引入进来了:

2、为什么我们导入场景启动器的时候,版本号都不用写:

  • 每个boot项目都有一个父项目spring-boot-starter-parent:
  • parent的父项目是spring-boot-dependencies,在spring-boot-dependencies中管理了相关的依赖以及版本:
  • 父项目 版本仲裁中心,把所有常见的jar的依赖版本都声明好了。
  • 比如:mysql-connector-j,我们只需要写依赖,不需要管版本:

3、自定义版本号

  • 利用maven的就近原则,如果我自己声明了,就用我自己的版本号,没有声明,就用父项目里提供的版本号:

3.1、直接在当前项目properties标签中声明父项目用的版本属性的key:

3.2、直接在导入依赖的时候声明版本:

4、第三方的jar包

  • springboot父项目中没有管理的第三方jar包,则需要自行声明版本号,例如:
<!-- https://mvnrepository.com/artifact/com.alibaba/druid -->
<dependency><groupId>com.alibaba</groupId><artifactId>druid</artifactId><version>1.2.16</version>
</dependency>

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

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

相关文章

020-信息打点-红蓝队自动化项目资产侦察企查产权武器库部署网络空间

020-信息打点-红蓝队自动化项目&资产侦察&企查产权&武器库部署&网络空间 #知识点&#xff1a; 1、工具项目-红蓝队&自动化部署 2、工具项目-自动化侦查收集提取 3、工具项目-综合&网络空间&信息 演示案例&#xff1a; ➢自动化-武器库部署-F8x ➢自…

leetcode—图 岛屿数量

岛屿数量 给你一个由 1&#xff08;陆地&#xff09;和 0&#xff08;水&#xff09;组成的的二维网格&#xff0c;请你计算网格中岛屿的数量。 岛屿总是被水包围&#xff0c;并且每座岛屿只能由水平方向和/或竖直方向上相邻的陆地连接形成。 此外&#xff0c;你可以假设该网…

RabbitMQ入门篇【图文并茂,超级详细】

&#x1f973;&#x1f973;Welcome 的Huihuis Code World ! !&#x1f973;&#x1f973; 接下来看看由辉辉所写的关于Docker的相关操作吧 目录 &#x1f973;&#x1f973;Welcome 的Huihuis Code World ! !&#x1f973;&#x1f973; 前言 1.什么是MQ 2.理解MQ 3.生活…

记一个奇怪的万能密码

前言 打的站点打多了&#xff0c;什么奇怪的问题都会发生 打点 开局一个登录框 用户枚举到账号爆破 测了一下&#xff0c;没发现admin的弱口令&#xff0c;但是发现存在用户枚举漏洞&#xff0c;因此准备跑一下账号 输入密码为123456 进行账号爆破 成功爆破出账号 是的…

【ARM 嵌入式 编译系列 7.3 -- GCC 链接脚本中 DISCARD 与 .ARM.exidx】

请阅读【嵌入式开发学习必备专栏 之 ARM GCC 编译专栏】 文章目录 背景.ARM.exidx方法一:使用链接器脚本方法二:使用链接器选项注意事项背景 在移植 RT-Thread 到 cortex-m33(RA4M2)上的时候,在编译的时候遇到下面问题: Building target: ra4m2.elf arm

PyTorch视觉工具箱:图像变换与上采样技术详解(1)

目录 Pytorch中Vision functions详解 pixel_shuffle 用途 用法 使用技巧 注意事项 参数 数学理论公式 示例代码及输出 pixel_unshuffle 用途 用法 使用技巧 注意事项 参数 数学理论公式 示例代码及输出 pad 用途 用法 使用技巧 注意事项 参数 示例代码…

智能机器人与旋量代数(9)

Chapt 3. 螺旋运动与旋量代数 3.1 螺旋运动 螺旋运动是关于一条空间直线的一个旋转运动&#xff0c;并伴随沿此直线的一个平移。是一种刚体绕空间轴 s s s旋转 θ \theta θ角&#xff0c;再沿该轴平移距离 d d d的复合运动&#xff0c;类似螺母沿螺纹做进给运动的情形。 一…

2024年【焊工(初级)】考试内容及焊工(初级)新版试题

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 焊工&#xff08;初级&#xff09;考试内容参考答案及焊工&#xff08;初级&#xff09;考试试题解析是安全生产模拟考试一点通题库老师及焊工&#xff08;初级&#xff09;操作证已考过的学员汇总&#xff0c;相对有…

docker 使用 vcs/2018 Verdi等 eda 软件

好不容易在ubuntu 安装好了eda软件&#xff0c;转眼就发现了自己的无知。 有博主几年前就搞定了docker上的EDA工具。而且更全&#xff0c;更简单。只恨自己太无知啊。 Synopsys EDA Tools docker image - EDA资源使用讨论 - EETOP 创芯网论坛 (原名&#xff1a;电子顶级开发网…

python解决从有序数组中寻找中位数

如果给定两个长度分别是m和n的有序数组array1和array2&#xff0c;需要对这两个有序数组找出其中的中位数&#xff0c;需要保证时间复杂度是O(long(min(m,n))&#xff0c;空间复杂度是O(1)。如下例子&#xff1a; 添加图片注释&#xff0c;不超过 140 字&#xff08;可选&#…

【教程】混淆Dart 代码

什么是代码混淆&#xff1f; 代码混淆是一种将应用程序二进制文件转换为功能上等价&#xff0c;但人类难于阅读和理解的行为。在编译 Dart 代码时&#xff0c;混淆会隐藏函数和类的名称&#xff0c;并用其他符号替代每个符号&#xff0c;从而使攻击者难以进行逆向工程。 Flut…

ChatGPT和文心一言哪个更好用?

目录 一、ChatGPT和文心一言大模型的对比分析 1.1 二者训练的数据情况分析 1.2 训练大模型数据规模和参数对比 1.3 二者3.5版本大模型对比总结 二、ChatGPT和文心一言功能对比分析 2.1 二者产品提供的功能情况分析 2.2 测试一下各种功能的特性 2.2.1 文本创作能力 2.2…

电脑提示“No Boot Device”怎么办?

在Windows 11/10/8/7启动时遇到错误如“No Boot Device Found”和“未找到引导设备硬盘3F0”时&#xff0c;会导致电脑无法正常开机。那么&#xff0c;No Boot Device错误该怎么修复呢&#xff1f;下面我们就来了解一下。 修复 1. 检查启动顺序并将BIOS的设置重置为默认值 为…

非线性最小二乘问题的数值方法 —— 狗腿法 Powell‘s Dog Leg Method (II, Python 简单实例)

Title: 非线性最小二乘问题的数值方法 —— 狗腿法 Powell‘s Dog Leg Method (II, Python 简单实例) 姊妹博文 非线性最小二乘问题的数值方法 —— 狗腿法 Powell‘s Dog Leg Method (I - 原理与算法) 0.前言 本篇博文作为对前述 “非线性最小二乘问题的数值方法 —— 狗腿法…

【mars3d】内置的右键测量菜单单击关闭按钮无法关闭测量结果说明

1.【mars3d】内置的右键测量菜单单击关闭按钮无法关闭测量结果说明 2.内置的右击地图查看此处坐标&#xff0c;出现的弹框按钮同样无法关闭的解决方案。 解决说明&#xff1a; 1.这个问题和mars3d没有关系&#xff0c;是and那边的问题&#xff0c;需要尝试固定下vue版本3.3.0或…

测试 yolov8 分割模型 边缘检测

发现 cfg/default.yaml 参数 mask_ratio 等于4 直接训练如下边缘分割标签,推理时mask 稀疏&#xff0c;训练时分数偏低,mask_ratio 改为1训练时打印的mask 的 P指标一直为0,将imgsz原图size 训练分数也不高 标注用的是labelme多边形 阅读源码发现可能是因为mask缩放导致 且出现…

springboot配置项动态刷新

文章目录 一&#xff0c;序言二&#xff0c;准备工作1. pom.xml引入组件2. 配置文件示例 三&#xff0c;自定义配置项动态刷新编码实现1. 定义自定义配置项对象2. 添加注解实现启动时自动注入3. 实现yml文件监听以及文件变化处理 四&#xff0c;yaml文件转换为java对象1. 无法使…

IPv4 开始收费!新的 IT 灾难?

对于想要继续使用公共IPv4地址的用户而言&#xff0c;他们主要靠回收和未使用地址段的释放才能用上IPv4&#xff0c;其中这些地址要么来自倒闭的组织&#xff0c;要么来自于那些已经迁移到IPv6时不再需要的地址。 不难想象&#xff0c;获取日益稀缺的IPv4中间过程变得复杂&…

接口测试之webservice

什么是Webservice Web service是一个平台独立的&#xff0c;低耦合的&#xff0c;自包含的、基于可编程的web的应用程序&#xff0c;可使用开放的XML&#xff08;标准通用标记语言下的一个子集&#xff09;标准来描述、发布、发现、协调和配置这些应用程序&#xff0c;用于开发…

STL之map【有序哈希表】使用方法

这里写目录标题 map【有序哈希表】使用方法1.头文件:2.创建map:3.添加键值对:4.查找键值对&#xff1a;5.遍历键-值对&#xff1a;5.综合示例&#xff1a;班级学生 map【有序哈希表】使用方法 话不多说&#xff0c;接着讲map用法&#xff1a; map&#xff1a;映射&#xff0c…