SpringBoot 的 概念、创建和运行

news2024/12/23 18:14:39

目录

1.什么是Spring Boot?

为什么要学Spring Boot?

SpringBoot的优点

Spring Boot 项目创建

前置工作:配置国内源

使用 idea 创建 Spring Boot 项目

网页版创建(了解)

拓展:删除 项目中无用的目录和文件

目录介绍

 运行项目


1.什么是Spring Boot?

什么是Spring Boot?
Spring 的诞⽣是为了简化 Java 程序的开发的,⽽ Spring Boot 的诞⽣是为了简化 Spring 程序开发的。
Spring Boot 翻译⼀下就是 Spring 脚⼿架,什么是脚⼿架呢?如下图所示:

 盖房⼦的这个架⼦就是脚⼿架,脚⼿架的作⽤是砌筑砖墙,浇筑混凝⼟、⽅便墙⾯抹灰,装饰和粉刷的。
简单来说,就是使⽤脚⼿架可以更快速的盖房⼦。
⽽ Spring Boot 就是 Spring 框架的脚⼿架,它就是为了快速开发 Spring 框架⽽诞⽣的。

可以看到,每次新技术的诞⽣,带来的改进相⽐于之前的效率会有⼀个质的提升,⽽ Spring Boot 相⽐于Spring 也是如此


为什么要学Spring Boot?

SpringBoot的优点

  • 快速集成框架,Spring Boot 提供了启动添加依赖的功能,⽤于秒级集成各种框架。
  • 内置运⾏容器,⽆需配置 Tomcat 等 Web 容器,直接运⾏和部署程序。
  • 快速部署项⽬,⽆需外部容器即可启动并运⾏项⽬。
  • 可以完全抛弃繁琐的 XML,使⽤注解和配置的⽅式进⾏开发。
  • ⽀持更多的监控指标,可以更好的了解项⽬的运⾏情况。

关于监控杆指标,Spring Boot 有一个专门给它去做的 Actuator 监控指标。
然后我们去继承这个监控指标的话,可以看到 Spring 项目运行的情况(非常详细的细节)!
比如:
当前 Spring Boot 项目中,有多少个 bean,每个 bean 都是在哪个平台上运行的;
JVM 的版本号是多少;当前项目中有多少个定时目录,有多少个缓存。。。
它都是有详细描述的。
而且,我们甚至可以通过网页方式,直接将 Spring Boot 项目 给关闭掉。
注意!是通过网页的方式!
就是说:通过本机的浏览器访问一个地址(生产服务器的一个Spring地址)。
访问之后,网页上就会有一个 “停止项目” 的按钮,一点,项目就关了。

可以这么说:SpringBoot 将 Spring 的所有 “痛点 / 缺陷” ,都解决了。
什么创建 根目录,xml配置文件,需要引入 spring-context 和 spring-beans 的依赖,Tomcat,部署项目。。。。都改成了内置!!!
就是不用我们去创建根目录 和 xml 配置文件,Spring Boot 都帮我们配置好了。直接拿着就用!
而且在部署项目的时候,不用再去下载 Tomcat 和 配置 Tomcat的环境了,因为这个,Spring Boot 也内置了!
总之,比起 Spring,好用的不是一星半点!!!

PS: Spring Boot,暂时没有发现缺点。。。
而且,还有一个更重要的学习原因:
现在的公司,几乎全部都是基于 Spring Boot 实现的项目。

另外,Spring Boot 有很多的插件

这些插件,可以让我们实现 开发环境 与 生产环境 的脱离。
这么说吧:
我们在开发环境中使用这些插件,就那 lombok 来说。
lombok 只有在编译之前,它是有用的。
编译之后,就没它的事了。

而 Spring Boot 就可以实现:在编译之前,lombok 就可以加到包里面。
但是!当我们大宝箱项目的时候,就会把 lombok 直接舍弃掉,反正也不用了!
这样的话,生产环境的包 和 我们本地运行的包,就完全是两个包。
生产环境的包,将 用不到的包都会筛选出来,删除掉。
只留下有用的。

如果,非要挑 Spring Boot 的 刺(缺点),还是有的!

1、我们在创建 Spring Boot 项目的时候,我会讲两种方式【1、网页,2、idea】、
这两种创建的方式,都会去拉取 Spring Boot 的 一个 jar 包(对应版本的工程目录)。
而这个拉取的工程目录,是国外网站的。
所以,就会导致 在某些情况下,我们去创建一个 String Boot 项目 可能会失败。
可以通过陪着国内源。只不过国内的源,版本都比较低

2、Spring Boot 升级的速度,非常快!!!
最快,一天就更新一次。。。
但是,差别并不大。
PS:在2.0版本的时候,版本改动带有的变化,是非常的!
但是,现在都已经到 7 版本了,改动带来变化不是很明显了! 逐渐趋于“稳定”了。

3、由于不用我们自己做配置,报错时很难定位。
【这是所有的高级框架的通病。】
Spring Boot 中,有一条规定:约定 大于 配置
编码代码的时候,遵守 约定 来写,比 遵守 配置 来写,更重要!
如果你不按照约定来写,你的代码就是有问题的!
另外,看日志是解决不了问题的。
日志,只会告诉你出了什么问题,不会像 错误信息栈那样,锁定出现错误的代码位置。
严格来说:这算是一个瑕疵,不算一个缺点,
因为你想啊,如果让我们去配置创建,这无疑是增加了我们的工作量。
严重影响我们程序员的幸福指数。
因此,我们更需要关注的是:Spring Boot 的 约定 大于 配置的思想!!!! 


Spring Boot 项目创建

前置工作:配置国内源

 

使用 idea 创建 Spring Boot 项目

需要安装一个 Spring Assistant 的插件

 下面就可以开始创建 Spring Boot 项目了。

这里,略微说明一下

 上面的 Spring Boot 的项目目录,都是从 初始化服务器 提供的 工程路径,来在线自动生成 我们当前项目目录的。

我们使用的是默认的初始化服务器,是从国外的网站上下载的。
而如果你使用的是 校园网,校园网是会屏蔽 一些国外的网站的。
而且,校园网的网速很慢!

解决的方法:使用国内源。
除了我前面提到的配置方法。
还有一个配置途径。


在我们创建 Spring Boot 项目 的时候,使用 自定义 初始化服务器 路径。 

 

 其它的地方都差不多!

在这里插入图片描述

网页版创建(了解)

如果你插件安不上 / 插件压根就搜不到,你就可以使用这种方式了。

注意!网页存在着缺陷。
如果没装插件的话,你通过网页的方式,可以把项目创建了。但是!我们在写 Spring Boot 项目的时候,尤其是配置文件的时候,可能没有 提示!!!
因为 那个插件(Spring Assistant)不光是包含了 Spring Boot 项目 的创建,还提供了针对 与 Spring Boot 项目的支持。
当我们去写一个东西的时候,它会有一个 提示。
尤其初学者,建议 插件 这个东西,还是必须要装的。
没提示,你就很容易写错。,还要导包等等。。。


优点:
所创建的项目的是一个 zip 的 包。
我们可以把这个包保存到本地,然后,就可以反复去使用。

假设我们要写一个项目 A ,解压这个压缩包,就可以去使用。
OK,后面我们又要去写一个 项目B,再去对这个 zip包,进行解压操作。
我们就又能得到一个新的项目。

而 idea 创建 的项目,只能使用一次。
想要在写一个,就需要再去new一个项目。

还有一种极端情况,就是官网崩了。
想知道我们的 idea 在 创建 Spring Bott 项目的时候,初始化服务器 都是 官网 拉去的资源。这一崩溃,idea 就无法创建 Spring Boot 项目了。
而 zip 包,就不存在这个问题了。
因为它存储在我们本地上,解压之后,就完整的新项目。

网页版创建 Spring Boot项目:
1、打开 Spring Boot 创建的网站:https://start.spring.io

 下面我们就可以来创建 Spring Boot 项目了。

 还没完!这是将 包 下载到本地了,而我们的目的:是在 idea中,使用它。

 需要注意的是:在打开项目的时候,它还需要去下载依赖的。
所以你要等一会,等到 启动类 出现 小箭头,就可以使用了。
下面,我们来启动项目,看看能不能使用?

 

拓展:删除 项目中无用的目录和文件

在我们引入的工程目录,有一些是不需要的,是无效的。
通常我们在创建 好 Spring Boot 项目 后的 第一件事,就是删除 无效的文件。

目录介绍

 运行项目

通过URL的方法,来输出一个helloworld
我们学习 JavaEE 就是⽤来实现 Web 项⽬或接⼝的,⽽之前是 Spring 其实是⼀个普通 Java 项⽬,没办法直接和浏览器进⾏互动,所以接下来我们要⽤ Spring Boot 来实现和浏览器及⽤户的交互。
那么,如何实现呢?

在这里插入图片描述

 我们再看看,类上面也加上 @RequestMapping,通过二级路径去访问方法。

 Sring Boot 中 “约定 大于 配置” 的思想。
在编写上面编写项目代码的时候,其实就涉及到 “约定 大于 配置” 的思想。

不知道你们有没有发现,在我们创建 Spring Boot 项目的时候,是没有设置配置文件。【这是因为 Spring Boot 帮我们创建好了】 

在这里插入图片描述

 而我们在将一个类 注入 到 Spring Boot 中的时候,和 Spring一样,是通过五大类注解来完 成的。
但是!我们并没有在 配置文件中,并没有设定扫描路径!

 

那么,Spring Boot 是怎么确定 bean 的位置,就在 springb2 包下面的呢?
从而,将 有注解的类 注入到 Spring Boot 中的呢?

其实我在前面提过一句。
这正是 “约定 大于 配置” 思想的一种体现。
明明我们没有配置 扫描路径,但是Spring Boot 中 存在着一个“约定”。
将需要存入 Spring Boot 中的 bean,都放在 springB2 的 目录下。

也就是说:
自动 生成 example 目录 下的 唯一子目录,就是根目录(启动类所处于的目录),也就是默认的扫描路径。

Spring Boot 就会去扫描这个“根目录”下的类,是否带有五大类注解。
如果有,在Spring Boot 启动的时候,直接将其实例化,并存入到 Spring Boot 中。
如果没有,则跳过。

因为 bean 已经被实例化了,因此,我们才能直接访问到,并且有效果。

另外,想要验证也很简单!

将UserController类,放到其它目录中。【没有与 启动类 处于 同一个 目录下】
此时,再来通过浏览器访问程序,你们就能明白 “约定”了、

 你就这么理解:
Spring Boot 将 Spring 的 配置文件 操作,给省略。
自动去生成一个 “根目录”(扫描路径)、
其扫描的规则,和 Spring 是 一模一样的。

将 启动类所处于的目录(根目录)下,所有带有注解的类,全部注入(托管)到 Spring Boot 中。

另外,Spring Boot 需要我们手动配置的地方很少,但是 Spring Boot 的设计思想是:“约定 大于 配置”。

意思就是:能约定的事情,就不需要我们去说动配置。
但是我们要知道有这么回事! 

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

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

相关文章

Matlab学习-轨迹热力图绘制

Matlab学习-轨迹热力图绘制 参考链接: MathWork-scatter函数使用 问题需求: 需要将轨迹上的点另一维信息同时显示在图上,比如横纵向误差等,这个时候画轨迹与误差的热力图就能很好同时反应位置和定位误差之间的关系;…

缓冲流~~

1:概述 缓冲流也称高效流,或者高级流。之前学习的字节流可以称为原始流。作用:缓冲流自带缓冲区,可以提高原始字节流,字符流读写数据的性能。 可以提高读写数据的效率。它通过在内存中创建缓冲区来减少对底层数据源的…

MATLAB图像处理实现高光抑制

下面是的几个用MATLAB进行高光抑制的处理例子。 1. 基于最大值滤波的亮光抑制方法 原理是用某像素周围一定大小的邻域中的最大值减去该像素值,可达到亮光抑制的效果。在MATLAB中,可以使用mat2gray函数将图像归一化后,再使用imextendedmax函…

Android Stuido Proguard Retrace Unscrambler直接reProguard反混淆retrace日志

Android Stuido Proguard Retrace Unscrambler直接reProguard反混淆retrace日志 (1)如果Android Studio里面没有安装下列插件之一的,在Settings的Plugins里面安装其中一个: (2)菜单栏中的code里面找到反混…

sphinx pdoc 生成API文档

文章目录 sphinxinstall pdoc sphinx install pip install sphinx sphinx_rtd_theme sphinx-autobuild pip install recommonmark sphinx_markdown_tables sphinx-quickstart 选 y Project language [en]: zh_CN conf.py: import sys sys.path.append(..)extensions [sph…

Word公式大括号左对齐

1、大括号公式如下: 2、依次选中每一行,然后在开头输入一个&,然后回车: 3、当最后一行输入完立马可以发现左对齐了: The higher I got, the more amazed I was by the view.

docker安装maven私服nexus及其配置使用

目录 docker搭建nexus登录私服管理后台重置admin密码 配置仓库 docker搭建nexus 下载 Nexus3 镜像 docker pull sonatype/nexus3创建宿主机挂载目录 mkdir –vp /usr/local/nexus-data记得修改权限 chmod 775 /usr/local/nexus-data创建 Nexus3 容器 docker run --privile…

C# 使用HttpListener时候异常(此平台不支持此操作:System.PlatformNotSupportedException)

C# 使用HttpListener时候异常(此平台不支持此操作:System.PlatformNotSupportedException) 代码: HttpListener listener new HttpListener(); 错误: System.PlatformNotSupportedException: Operation is not su…

采用匿名内部类形式定义Handler有什么不妥?

写这篇博客,是为分析Handler引起内存泄漏做准备。 目录 匿名内部类的含义是什么?匿名内部类的三种情况非静态内部类为什么会持有外部类的引用? 匿名内部类的含义是什么? 首先是内部类,(内部类不难理解&am…

WPS Office AI实战:一键生成PPT幻灯片

前些天WPS Office AI放出来内测申请,相信不少小伙伴都拿到了体验资格,不知道体验到国产AI的魅力没有?作为写作中的重头戏,一张PPT的制作让不少小伙伴面露难色,单排版布局这一项就足以让人望而却步。 AI 在写作中的应用…

使用EXCEL公式编程从网页获取股票数据并保存到excel

共享文件地址 在dataexcel服务器的 /示例/03函数示例/获取股票数据8.fexm 路径 公式脚本 var urlcelltext("URL");//获取单元格ID为URL的单元格内容 var txtWebGet(url); //从网页获取数据 cellvalue("data",txt); //将获取到的数据库保存到ID为DATA的单…

SSM学习笔记-------MyBatis

MyBatis学习笔记 一、入门二、XML配置1、configuration(配置)2、properties(属性)3、settings(设置)4、typeAliases(类型别名)5、typeHandlers(类型处理器)6、…

Elasticsearch Dump的详细安装和迁移es索引和数据的使用教程

前言 如果希望将数据导出到本地文件而不是通过编程方式处理,可以考虑使用Elasticsearch的导出工具,如Elasticsearch Dump(Elasticdump)或Elasticsearch Exporter。这些工具可以将Elasticsearch索引中的数据导出为可用于后续处理的…

备战秋招002(20230704)

文章目录 前言一、今天学习了什么?二、关于问题的答案1.线程池2.synchronized关键字3、volatile 总结 前言 提示:这里为每天自己的学习内容心情总结; Learn By Doing,Now or Never,Writing is organized thinking. …

vue3+wangEditor5/vue-quill自定义上传音频+视频

一.各种编辑器分析 Quill 这是另一个常用的富文本编辑器,它提供了许多可定制的功能和事件,并且也有一2个官方的 Vue 3 组件 wangEditor5 wangEditor5用在Vue3中自定义扩展音频、视频、图片菜单;并扩展音频元素节点,保证音频节…

【数据结构与算法篇】之时间复杂度与空间复杂度

【数据结构与算法篇】之时间复杂度与空间复杂度 一、时间复杂度1.1时间复杂度的定义1.2 常见的时间复杂度的计算1.2.1 常数时间复杂度( O ( 1 ) ) O(1)) O(1))1.2.2 线性时间复杂度( O ( N ) O(N) O(N))1.2.3 对数时间复杂度( O (…

蓝桥杯专题-试题版含答案-【荷兰国旗问题】【正三角形的外接圆面积】【比较字母大小】【车牌号】

点击跳转专栏>Unity3D特效百例点击跳转专栏>案例项目实战源码点击跳转专栏>游戏脚本-辅助自动化点击跳转专栏>Android控件全解手册点击跳转专栏>Scratch编程案例点击跳转>软考全系列点击跳转>蓝桥系列 👉关于作者 专注于Android/Unity和各种游…

SSTI模板注入

目录 1、原理简述 2、常用payload及相关脚本 (1).__class__ (2).__class__.__base__ (3).__class__.__base__.__subclasses__() (4).__class__.__base__.__subclass…

【周末闲谈】浅谈“AI+算力”

随着人工智能技术的飞速发展,“AI算力”的结合应用已成为科技行业的热点话题,甚至诞生出“AI算力最强龙头“的网络热门等式。该组合不仅可以提高计算效率,还可以为各行各业带来更强大的数据处理和分析能力,从而推动创新和增长。 文…