目录
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 的设计思想是:“约定 大于 配置”。
意思就是:能约定的事情,就不需要我们去说动配置。
但是我们要知道有这么回事!