轻松入门spring boot只需5个知识点!

857 阅读11分钟

前言

Spring Boot 是由 Pivotal 团队提供的全新框架,其设计目的是用来简化新 Spring 应用的初始搭建以及开发过程。该框架通过约定由于配置的原则,来进行简化配置。Spring Boot致力于在蓬勃发展的快速应用开发领域成为领导者。Spring Boot 目前广泛应用与各大互联网公司,有以下特点:

  1. 创建独立的 Spring 应用程序
  2. 嵌入的 Tomcat,无需部署 WAR 文件
  3. 简化 Maven 配置
  4. 自动配置 Spring
  5. 提供生产就绪型功能,如指标,健康检查和外部配置
  6. 绝对没有代码生成,对 XML 没有要求配置

并且 Spring Boot 可以与Spring Cloud、Docker完美集成,所以我们非常有必要学习 Spring Boot 。并且了解其内部实现原理。Spring Boot 学习笔记100多页,关注公众号:麒麟改bug;通过本次分享,您不仅可以学会如何使用 Spring Boot,还可以学习到其内部实现原理,并深入理解!

 我管她是什么,好用就行了啊!!!但是无奈我的简历上写了“精通SpringBoot”。。。那总得大体说得上SpringBoot是个啥东西吧!

Spring相信大家都用过,那一堆的配置,用起来就好比:你要吃饭,饭是熟的,但是你还要自己(配置)加油盐酱醋,还得搅拌均匀,然后才能吃,,,

SpringBoot就不一样了,直接给你端过来一碗香喷喷的牛肉拉面,哇,好香,,,,(好吧,写这个博客的时候没有吃饭,臆想一下,)你可以直接狼吞虎咽了有木有?啥?你想让她帮你嚼碎然后喂你?!!!滚吧你。。。

一、关于Spring Boot

在开始了解Spring Boot之前,我们需要先了解一下Spring,因为Spring Boot的诞生和Spring是息息相关的,Spring Boot是Spring发展到一定程度的一个产物,但并不是Spring的替代品,Spring Boot是为了让程序员更好的使用Spring。说到这里可能有些人会迷糊,那到底Spring和Spring Boot有着什么样的联系呢?

1.Spring发展史

在开始之前我们先了解一下Spring,Spring的前身是interface21,这个框架最初是为了解决EJB开发笨重臃肿的问题,为J2EE提供了另一种简单又实用的解决方案,并在2004年3月发布了Spring 1.0正式版之后,就引起了Java界广泛的关注和热评,从此Spring在Java界势如破竹迅速走红,一路成为Java界一颗璀璨夺目的明星,至今无可替代,也一度成为J2EE开发中真正意义上的标准了,而他的创始人Rod Johnson也在之后声名大噪,名利双收,现在是一名优秀的天使投资人,走上了人生的巅峰。

2.Spring Boot诞生

那既然Spring已经这么优秀了,为什么还有了之后Spring Boot?

因为随着Spring发展的越来越火,Spring也慢慢从一个小而精的框架变成了,一个覆盖面广大而全的框架,另一方面随着新技术的发展,比如nodejs、golang、Ruby的兴起,让Spring逐渐看着笨重起来,大量繁琐的XML配置和第三方整合配置,让Spring使用者痛苦不已,这个时候急需一个解决方案,来解决这些问题。

就在这个节骨眼上Spring Boot应运而生,2013年Spring Boot开始研发,2014年4月Spring Boot 1.0正式发布,Spring Boot诞生之初就受到业界的广泛关注,很多个人和企业陆续开始尝试,随着Spring Boot 2.0的发布,又一次把Spring Boot推向了公众的视野,也有越来越多了的中大型企业把Spring Boot使用到正式的生产环境了。值得一提的是Spring官方也把Spring Boot作为首要的推广项目,放到了官网的首位。

3.Spring Boot介绍

Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化Spring应用初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。Spring Boot其实就是一个整合很多可插拔的组件(框架),内嵌了使用工具(比如内嵌了Tomcat、Jetty等),方便开发人员快速搭建和开发的一个框架。

上面的解释是为了大家方便理解,加深记忆。。。下面看看官方的介绍:

Spring Boot makes it easy to create stand-alone, production-grade Spring based Applications that you can "just run". We take an opinionated view of the Spring platform and third-party libraries so you can get started with minimum fuss. Most Spring Boot applications need very little Spring configuration.

我忍不住想翻译一下:

Spring Boot使创建独立的、基于生产级Spring的应用程序变得很容易,您可以“直接运行”这些应用程序。 我们对Spring平台和第三方库有自己的见解,这样您就可以轻松入门了。大多数Spring引导应用程序只需要很少的Spring配置。

大体意思就是说,她真的很好用,她可以让你在服务的搭建时省去很多繁琐的配置,用过之后的体验:“简直像是日了狗了”。。。

4.Spring Boot特点

  • 搭建项目快,几秒钟就可以搭建完成;
  • 让测试变的简单,内置了JUnit、Spring Boot Test等多种测试框架,方便测试;
  • Spring Boot让配置变的简单,Spring Boot的核心理念:约定大约配置,约定了某种命名规范,可以不用配置,就可以完成功能开发,比如模型和表名一致就可以不用配置,直接进行CRUD(增删改查)的操作,只有表名和模型不一致的时候,配置名称即可;
  • 内嵌容器,省去了配置Tomcat的繁琐;
  • 方便监控,使用Spring Boot Actuator组件提供了应用的系统监控,可以查看应用配置的详细信息;

二、开发环境

Spring Boot 2.0.4

JDK 1.8

IDE:IntelliJ IDEA 2018.2

注意:Spring Boot 2.x 要求Java8及以上版本,不再支持Java6、Java7.

三、开发工具

IntelliJ IDEA Vs MyEclipse

开发工具的选择是每一个人入门人员要经历和选择的,如果你是老手可以忽略本节。

曾几何时Eclipse和MyEclipse统治了Java使用者,而如今,年复一年,毫不客气的说,十年前我用MyEclipse 6.0到现在的MyEclipse 2017 我没有感觉有任何的变化,还是一样的皮肤,一样的布局,一样卡的起飞使用感受,即使按照Google的指引,优化了一堆配置之后,你也会发现收效甚微。

这让我想起了曾经辉煌一时的诺基亚,到今天为止它依然不知道自己做错了什么,但时过境迁当一个事物跟不上时代变化的节奏,它就会被新来更适合的事物所代替。不得不说我曾经也是MyEclipse的忠实热爱者,并且对一个人来说一旦接受了某种事物,出于习惯的作用,通常改变也是很难的。

然而,到今天,我不得不承认IntelliJ IDEA从外观到运行速度上要比MyEclipse好太多,尤其是对Spring Boot的支持上,更好天作之合,所以IntelliJ IDEA是最好的选择。

四、Spring Boot版本号说明

官网上的SpringBoot版本如下图所列:

版本号后面的英文代表什么含义呢?

具体含义,如下文所示:

  • SNAPSHOT:快照版,表示开发版本,随时可能修改;
  • M1(Mn):M是milestone的缩写,也就是里程碑版本;
  • RC1(RCn):RC是release candidates的缩写,也就是发布预览版;
  • Release:正式版,也可能没有任何后缀也表示正式版;

五,springBoot核心功能

☆ 独立运行的spring项目:Spring Boot可以以jar包形式直接运行,如java-jar xxxjar优点是:节省服务器资源

☆ 内嵌servlet 容器:Spring Boot 可以选择内嵌Tomcat,Jetty,这样我们无须以war包形式部署项目。

☆ 提供starter 简化Maven 配置:在Spring Boot 项目中为我们提供了很多的spring-boot-starter-xxx的项目(我们把这个依赖可以称之为起步依赖),我们导入指定的这些项目 的坐标,就会自动导入和该模块相关的依赖包:
例如我们后期再使用Spring Boot 进行web开发我们就需要导入spring-boot-starter-web这个项目的依赖,导入这个依赖以后!那么Spring Boot就会自动导入web开发所需要 的其他的依赖包,如下图所示:

☆ 自动配置 spring:Spring Boot 会根据在类路径中的jar包,类,为jar包里的类自动配置Bean,这样会极大减少我们要使用的配置。
当然Spring Boot只考虑了大部分开发场景,并不是所有的场景,如果在实际的开发中我们需要自动配置Bean,而Spring Boot不能满足,则可以自定义自动配置。
☆ 准生产的应用监控:Spring Boot 提供基于http,sh,telnet对运行时的项目进行监控

☆ 无代码生成和xml配置:Spring Boot大量使用spring4.x提供的注解新特性来实现无代码生成和xml 配置。spring4.x提倡使用Java配置和注解配置组合,而Spring Boot不需要 任何xml配置即可实现spring的所有配置。

自动化配置是如何做到的?

spring boot给我们提供了很多的条件注解来完成

六、补充内容:

啥玩意!?你还不明白?还想更加“深入”的了解一下她?好吧那我就在给你贴点东西吧(有点乱,你随便翻翻看看吧):

北京时间 2018 年 3 月 1 日早上,如约发布的 Spring Boot 2.0 在同步至 Maven 仓库时出现问题,导
致在 GitHub 上发布的 v2.0.0.RELEASE 被撤回。在问题修复后,官方重新发布了 Spring Boot 2.0,
并提供了 Maven 中央仓库地址。至此 Spring Boot2.0 正式推出!

官方表示,这个版本经历了 17 个月的开发,有 215 个不同的使用者提供了超过 6800 次的提交。非常感谢提
供贡献的每一位用户,并感谢所有对这些里程碑版本提供重要反馈的早期采用者。

该版本是自 4 年前发布 Spring Boot 1.0 以来的第一次重大修订,也是首个提供对 Spring Framework 5.0
支持的 GA 稳定版本。
那去哪里找SpringBoot呢?

很好,这位同学问得好!:

怎么样?这个地方熟悉吧,没错,这就是Spring家族,SB(SpringBoot,一下以及今后的博客简称SB)也是其中成员之一,你可以把她当做Spring的好朋友(●'◡'●)ノ*\(๑•₃•๑)*或者闺蜜什么的,whatever吧。。。总之她让我们在和Spring打交道的时候很方便了。

另外SpringBoot2.X之后真的是大换血了:

新版本值得关注的亮点:

1.基于 Java 8,支持 Java 9,这意味着不是不可以使用JDK7 或更旧的JDK版本运行SpringBoot2而是官方推荐使用JDK8+版本,你自己琢磨琢磨用还是用。。。.

2.支持 Quartz 调度程序

3.大大简化了安全自动配置

4.支持嵌入式 Netty

5.Tomcat, Undertow 和 Jetty 均已支持 HTTP/2

6.全新的执行器架构,支持 Spring MVC, WebFlux 和 Jersey

7.使用 Spring WebFlux/WebFlux.fn 提供响应式 Web 编程支持

8.为各种组件的响应式编程提供了自动化配置,如:Reactive Spring Data、Reactive Spring Security 等

9.用于响应式 Spring Data Cassandra, MongoDB, Couchbase 和 Redis 的自动化配置和启动器 POM

10.引入对 Kotlin 1.2.x 的支持,并提供了一个 runApplication 函数,让你通过惯用的 Kotlin 来运行 Spring Boot 应用程序。更多信息请参阅参考文档中对 Kotlin 的支持部分

11.启动时的 ASCII 图像 Spring Boot banner 现已支持 GIF
举个栗子:

值得注意的一点是,在 Spring Boot 2.0 中,许多配置属性已被重命名或被删除,为了方便升级,Spring Boot 发布了一个新的 spring-boot-properties-migrator 模块。只要将其作为依赖添加到项目中,它不仅会分析应用程序的环境并在启动时打印诊断信息,而且还会在运行时阶段为项目临时将属性迁移至新的配置方式。

在程序迁移至springboot2.0 期间,这个模块是必备的

org.springframework.boot spring-boot-properties-migrator 注意: 在迁移完成后,请确保从项目的依赖关系中移除该模块。

总结

以下是小编整理的Java微服务必备的【Spring 全家桶】Spring Boot 学习笔记100多页,关注公众号:麒麟改bug,编程的世界永远向所有热爱编程的人开放,这是一个自由,平等,共享的世界,我始终是这样坚信的。