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

news2024/11/17 11:30:12

示例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.coloradmin.cn/o/1396782.html

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

相关文章

C Primer Plus 第6版 编程练习 chapter 16

文章目录 1. 第1题1.1 题目描述1.2 编程源码1.3 结果显示 2. 第2题2.1 题目描述2.2 编程源码2.3 结果显示 3. 第3题3.1 题目描述3.2 编程源码3.3 结果显示 4. 第4题4.1 题目描述4.2 编程源码4.3 结果显示 5. 第5题5.1 题目描述5.2 编程源码5.3 结果显示 6. 第6题6.1 题目描述6.…

FPC柔性化机器视觉缺陷检测

FPC(柔性电路板)在电子产品中扮演着至关重要的角色&#xff0c;其质量和可靠性直接影响到产品的性能和安全性。在FPC线路板加工过程中&#xff0c;由于制造工艺的复杂性&#xff0c;很容易产生各种缺陷&#xff0c;如焊锡不良、偏位、漏铜、短路等&#xff0c;因为有太多的环节…

一步一步实现基于COMSOL的单模光纤波导仿真

COMSOL单模光纤波导仿真 &#x1f3a1;导航小助手&#x1f3a1; COMSOL单模光纤波导仿真1.模型向导2.构建几何3.添加完美匹配层&#xff1a;4.添加材料&#xff1a;5.添加散射边界条件&#xff1a;6.定义输入和输出&#xff1a;6.1 输入端定义6.2 输出端定义 7.划分网格7.1光纤…

家校沟通的重要性及意义

在教育的世界里&#xff0c;老师和家长都是孩子成长道路上的重要守护者。但有时&#xff0c;两者之间的沟通仿佛形成了一道难以逾越的鸿沟。那么&#xff0c;为何家校沟通如此重要&#xff1f;它又为教育带来了怎样的影响&#xff1f; 家校沟通有助于建立互信关系。当家长和老…

HarmonyOS SDK,助力开发者打造焕然一新的鸿蒙原生应用

鸿蒙生态千帆启航仪式于1月18日正式启动。从2019年HarmonyOS正式发布到2020年“没有人能够熄灭漫天星光”&#xff0c;今天&#xff0c;满天星光终汇成璀璨星河&#xff0c;HarmonyOS NEXT鸿蒙星河版重磅发布&#xff0c;带来了全新架构、全新体验、全新生态。作为支撑鸿蒙原生…

springboot mybatis-plus swing实现报警监听

通过声音控制报警器&#xff0c;实现声光报警&#xff0c;使用beautyeye_lnf.jar美化界面如下 EnableTransactionManagement(proxyTargetClass true) SpringBootApplication EnableScheduling public class AlarmWarnApplication {public static void main(String[] args) …

51单片机中断系统编程

一.外部中断 1.编程思想 中断准备&#xff1a;中断初始化函数打开中断开关 &#xff0c;选择中断传输方式中断处理&#xff1a;为了便于观察&#xff0c;让我们知道单片机进入中断处理函数&#xff0c;在这里我们选择打开流水灯电路搭建&#xff1a;由于P3^3引脚不便直接接地…

C# ObjectArx 绘制表格并设置单元格合并

第一行默认是标题&#xff0c;可设置行【RowType】进行设置类型 Document doc Application.DocumentManager.MdiActiveDocument;using (Transaction tr doc.TransactionManager.StartOpenCloseTransaction()){BlockTable bt tr.GetObject(doc.Database.BlockTableId, OpenMo…

vue列表飞入效果

效果 实现代码 <template><div><button click"add">添加</button><TransitionGroup name"list" tag"ul"><div class"list-item" v-for"item in items" :key"item.id">{{ i…

conda 安装, 配置以及使用

文章目录 1. 安装2. 配置2.1 如何配置2.2 快速设置取消自动进入 base 环境conda 添加清华源pip 添加清华源pip 更新为最新版本 3. 使用 conda 是 python 的环境管理工具包&#xff0c;非常好用&#xff0c;特别是 miniconda 相对于 conda 不需要安装其他的工具&#xff0c;而且…

从临床和科研场景分析ChatGPT在医疗健康领域的应用可行性

2023年4月发表在Journal Medical Systems的文献《Evaluating the Feasibility of ChatGPT in Healthcare: An Analysis of Multiple Clinical and Research Scenarios》&#xff08;评估 ChatGPT 在医疗健康领域的可行性&#xff1a;对多种临床和研究场景的分析&#xff09;介绍…

Rust-泄漏

在C中&#xff0c;如果引用计数智能指针出现了循环引用&#xff0c;就会导致内存泄漏。而Rust中也一样存在引用计数智能指针Rc,那么Rust中是否可能制造出内存泄漏呢? 内存泄漏 首先&#xff0c;我们设计一个Node类型&#xff0c;它里面包含一个指针&#xff0c;可以指向其他…

Python的OpenCV模块实现图像转换素描图简单示例

一、示例代码&#xff1a; import cv2img cv2.imread(/home/lijiang/图片/ubuntu_wallpaper/Einstein_2.jpg) # 读取图像grey cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) # 灰度 invert cv2.bitwise_not(grey)blur_img cv2.GaussianBlur(invert…

Postgresql数据库死锁

死锁报错1 UPDATE deadlock_example SET value value 1 WHERE id 1ERROR: deadlock detected DETAIL: Process 95 waits for ShareLock on transaction 3553457; blocked by process 187. Process 187 waits for ShareLock on transaction 3553458; blocked by process 95.…

串联RLC电路中的增益

在串联RLC电路中&#xff0c;增益又可以叫放大倍数&#xff0c;用M或者G表示 电压增益就是输出电压比输入电压&#xff0c;MVo/Vin 在串联RLC中&#xff0c;VoIr*Rac,VinIr*(sLr1/sCrRac) MRac/(sLr1/sCrRac) 当输入频率fs时&#xff0c;fr为谐振频率 输入频率0<fs<…

贯通用友T+与企企,引领企业数字化转型新篇章!

客户介绍&#xff1a; 某科技有限公司是一家专注于高端芯片研发和制造的高科技企业。自成立以来&#xff0c;该企业始终坚持以科技创新为核心&#xff0c;致力于为全球客户提供高性能、高品质的芯片解决方案。公司拥有一支由业内资深专家和优秀工程师组成的研发团队&#xff0…

带你学C语言-指针(4)

目录 ​编辑 ⚾0.前言 &#x1f3c0;1.回调函数 ⚽2.qsort &#x1f3c9;2.1 qsort函数的模拟实现 &#x1f3be;3.sizeof与strlen对比 &#x1f3be;4.结束语 ⚾0.前言 言C之言&#xff0c;聊C之识&#xff0c;以C会友&#xff0c;共向远方。各位CSDN的各位你们好啊&…

selenium处理下拉框

当想要爬取的数据由下拉框来选择时&#xff0c;应该如何处理&#xff1f; 页面如下&#xff1a; 目的获得电影的详细信息&#xff0c;包括票房&#xff0c;上映日期等。 代码如下&#xff1a; from selenium import webdriver from selenium.webdriver.support.select impor…

28个炫酷的CSS特效动画示例(含源代码)

CSS是网页的三驾马车之一&#xff0c;是对页面布局的总管家&#xff0c;2024年了&#xff0c;这里列出28个超级炫酷的CSS动画示例&#xff0c;让您的网站更加炫目多彩。 文章目录 1. 涌动的弹簧效果2. 超逼真的3D篮球弹跳&#xff0c;含挤压弹起模态3. 鼠标放div上&#xff0c;…

linux磁盘,分区,挂载等等

1. 修改磁盘分区的标签 例如&#xff1a;733be18b-7baf-d84c-879d-ca3db465f179太长了&#xff0c;修改一下。 linuxchenxiao:/media/linux/733be18b-7baf-d84c-879d-ca3db465f179$ 先 sudo blkid sudo blkid 找到你想修改的UUID(唯一标识符) /dev/sda1: UUID"733be…