JavaEE进阶 - SpringBoot 的 概念、创建和运行 - 细节狂魔

文章目录

  • 1.什么是Spring Boot?
    • 什么是Spring Boot?
    • 为什么要学Spring Boot?
      • SpringBoot的优点
  • Spring Boot 项目创建
    • 前置工作:配置国内源
    • 使用 idea 创建 Spring Boot 项目
      • idea 社区版
      • idea 专业版
    • 网页版创建(了解)
    • 拓展:删除 项目中无用的目录和文件
  • Spring Boot 项目目录介绍
  • 运行项目
    • 通过URL的方法,来输出一个helloworld
  • Sring Boot 中 "约定 大于 配置" 的思想。
  • 总结

1.什么是Spring Boot?

什么是Spring Boot?

Spring 的诞⽣是为了简化 Java 程序的开发的,⽽ Spring Boot 的诞⽣是为了简化 Spring 程序开发的。
Spring Boot 翻译⼀下就是 Spring 脚⼿架,什么是脚⼿架呢?如下图所示:
JavaEE进阶 - SpringBoot 的 概念、创建和运行 - 细节狂魔_第1张图片
盖房⼦的这个架⼦就是脚⼿架,脚⼿架的作⽤是砌筑砖墙,浇筑混凝⼟、⽅便墙⾯抹灰,装饰和粉刷的。
简单来说,就是使⽤脚⼿架可以更快速的盖房⼦。
⽽ Spring Boot 就是 Spring 框架的脚⼿架,它就是为了快速开发 Spring 框架⽽诞⽣的。

再来看个例子:
例如,以前铺路是这样的:【Spring】
JavaEE进阶 - SpringBoot 的 概念、创建和运行 - 细节狂魔_第2张图片
改造之后的效率是这样的:【SpringBoot】
JavaEE进阶 - SpringBoot 的 概念、创建和运行 - 细节狂魔_第3张图片
或者是这样的:JavaEE进阶 - SpringBoot 的 概念、创建和运行 - 细节狂魔_第4张图片
可以看到,每次新技术的诞⽣,带来的改进相⽐于之前的效率会有⼀个质的提升,⽽ Spring Boot 相⽐于Spring 也是如此


为什么要学Spring Boot?

SpringBoot的优点

快速集成框架,
Spring Boot 提供了启动添加依赖的功能,⽤于秒级集成各种框架。

内置运⾏容器,
⽆需配置 Tomcat 等 Web 容器,直接运⾏和部署程序。

快速部署项⽬,⽆需外部容器即可启动并运⾏项⽬。

可以完全抛弃繁琐的 XML,使⽤注解和配置的⽅式进⾏开发。

⽀持更多的监控的指标,可以更好的了解项⽬的运⾏情况。

PS::这个我其实在开篇 初识框架中,我就是以 SpringBoot,来讲解的。
因此,多的,我就不讲了。

关于监控杆指标,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 项目创建

前置工作:配置国内源

直接参考这篇Spring 创建 和 使⽤文章即可

使用 idea 创建 Spring Boot 项目

这可以分为两个中情况:
1、idea 社区版
2、idea 专业版

如果你是社区版,需要安装一个插件。
反之,如果你是专业版,就可以不用安装插件了。


idea 社区版

需要安装一个 Spring Assistant 的插件
JavaEE进阶 - SpringBoot 的 概念、创建和运行 - 细节狂魔_第5张图片

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

这里,略微说明一下
JavaEE进阶 - SpringBoot 的 概念、创建和运行 - 细节狂魔_第6张图片

上面的 Spring Boot 的项目目录,都是从 初始化服务器 提供的 工程路径,来在线自动生成 我们当前项目目录的。
JavaEE进阶 - SpringBoot 的 概念、创建和运行 - 细节狂魔_第7张图片
我们使用的是默认的初始化服务器,是从国外的网站上下载的。
而如果你使用的是 校园网,校园网是会屏蔽 一些国外的网站的。
而且,校园网的网速很慢!

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

在我们创建 Spring Boot 项目 的时候,使用 自定义 初始化服务器 路径。
JavaEE进阶 - SpringBoot 的 概念、创建和运行 - 细节狂魔_第8张图片
其它的地方都差不多!
JavaEE进阶 - SpringBoot 的 概念、创建和运行 - 细节狂魔_第9张图片
唯一不同的就是:在引入框架支持的时候,多出了几个选项
JavaEE进阶 - SpringBoot 的 概念、创建和运行 - 细节狂魔_第10张图片


idea 专业版

专业和社区版是差不多的,我就简略演示一下过程。
JavaEE进阶 - SpringBoot 的 概念、创建和运行 - 细节狂魔_第11张图片
另外,使用国内源创建 Spring Boot 项目,专业版也是支持的!
JavaEE进阶 - SpringBoot 的 概念、创建和运行 - 细节狂魔_第12张图片


网页版创建(了解)

如果你实在是非常懒。
idea版本 不想搞,或者 插件安不上 / 插件压根就搜不到,你就可以使用这种方式了。

注意!网页存在着缺陷。
如果没装插件的话,你通过网页的方式,可以把项目创建了。但是!我们在写 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
JavaEE进阶 - SpringBoot 的 概念、创建和运行 - 细节狂魔_第13张图片
下面我们就可以来创建 Spring Boot 项目了。

还没完!这是将 包 下载到本地了,而我们的目的:是在 idea中,使用它。
JavaEE进阶 - SpringBoot 的 概念、创建和运行 - 细节狂魔_第14张图片
需要注意的是:在打开项目的时候,它还需要去下载依赖的。
所以你要等一会,等到 启动类 出现 小箭头,就可以使用了。
下面,我们来启动项目,看看能不能使用?
JavaEE进阶 - SpringBoot 的 概念、创建和运行 - 细节狂魔_第15张图片
另外,这个 zip 文件包,你可以一直留着,反复解压使用。
因为解压之后,就是一个“空项目”嘛。
JavaEE进阶 - SpringBoot 的 概念、创建和运行 - 细节狂魔_第16张图片


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

在我们引入的工程目录,有一些是不需要的,是无效的。
通常我们在创建 好 Spring Boot 项目 后的 第一件事,就是删除 无效的文件。
JavaEE进阶 - SpringBoot 的 概念、创建和运行 - 细节狂魔_第17张图片


Spring Boot 项目目录介绍


运行项目

通过URL的方法,来输出一个helloworld

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

我们再看看,类上面也加上 @RequestMapping,通过二级路径去访问方法。
JavaEE进阶 - SpringBoot 的 概念、创建和运行 - 细节狂魔_第18张图片


Sring Boot 中 “约定 大于 配置” 的思想。

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

不知道你们有没有发现,在我们创建 Spring Boot 项目的时候,是没有设置配置文件。【这是因为 Spring Boot 帮我们创建好了】
JavaEE进阶 - SpringBoot 的 概念、创建和运行 - 细节狂魔_第19张图片
而我们在将一个类 注入 到 Spring Boot 中的时候,和 Spring一样,是通过五大类注解来完 成的。
但是!我们并没有在 配置文件中,并没有设定扫描路径!JavaEE进阶 - SpringBoot 的 概念、创建和运行 - 细节狂魔_第20张图片
那么,Spring Boot 是怎么确定 bean 的位置,就在 springb2 包下面的呢?
从而,将 有注解的类 注入到 Spring Boot 中的呢?

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

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

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

因为 bean 已经被实例化了,因此,我们才能直接访问到,并且有效果。
JavaEE进阶 - SpringBoot 的 概念、创建和运行 - 细节狂魔_第21张图片

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

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

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

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

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

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


总结

Spring Boot 是为了快速开发 Spring ⽽诞⽣的.
Spring Boot 具备:
快速集成框架,Spring Boot 提供了启动添加依赖的功能,⽤于秒级集成各种框架。
内置运⾏容器,⽆需配置 Tomcat 等 Web 容器,直接运⾏和部署程序。
快速部署项⽬,⽆需外部容器即可启动并运⾏项⽬。
可以完全抛弃繁琐的 XML,使⽤注解和配置的⽅式进⾏开发。
⽀持更多的监控的指标,可以更好的了解项⽬的运⾏情况等特点。
Spring Boot 可使⽤ Idea 或⽹⻚创建,它的设计思想是约定⼤于配置,类上标注
@SpringBootApplication 就可以启动 Spring Boot 项⽬了。

你可能感兴趣的:(JavaEE进阶,spring,boot,java-ee,java)