#|SpringBoot2学习笔记一--Spring与SpringBoot2

该文本笔记 来源于尚硅谷:SpringBoot2文本教程
一方面为了缩短做笔记的时间,另一方面也为了后续巩固复习时方便。直接在尚硅谷官方笔记上进行标注个人认为需要关注的点。如需转载请务必注明笔记文本来源于尚硅谷教学课程。
一. Spring与SpringBoot 1、Spring能做什么 1.1、Spring的能力 #|SpringBoot2学习笔记一--Spring与SpringBoot2
文章图片

1.2、Spring的生态 https://spring.io/projects/spring-boot
覆盖了:
web开发
数据访问
安全控制
分布式
消息服务
移动开发
批处理

1.3、Spring5重大升级 1.3.1、响应式编程
#|SpringBoot2学习笔记一--Spring与SpringBoot2
文章图片

1.3.2、内部源码设计
基于Java8的一些新特性,如:接口默认实现。重新设计源码架构。

SpringBoot2基于java8实现。
java8: 引入接口默认实现。为什么说java8的引入使得spring和springboot底层设计结构发生了很大的变化。spring中有很多接口,接口中定义了上百个方法,倘若我们只想让类A实现接口的前三个方法,那么后面的所有方法都要空定义出来。因此可以采用适配器设计模式,适配器设计模式使用类实现接口所定义的方法,尽管是空实现,那么当A想要只实现接口的前三个方法时,只需要继承于适配器并重写对应的三个方法即可。但是有了接口默认实现(在方法之前加default关键字)之后,类A想实现哪几个方法都可以。
2、为什么用SpringBoot Spring Boot makes it easy to create stand-alone, production-grade Spring based Applications that you can “just run”.
能快速创建出生产级别的Spring应用
2.1、SpringBoot优点
  • Create stand-alone Spring applications创建独立Spring应用
  • Embed Tomcat, Jetty or Undertow directly (no need to deploy WAR files)内嵌web服务器
  • Provide opinionated ‘starter’ dependencies to simplify your build configuration自动starter依赖,简化构建配置
  • Automatically configure Spring and 3rd party libraries whenever possible自动配置Spring以及第三方功能
  • Provide production-ready features such as metrics, health checks, and externalized configuration提供生产级别的监控、健康检查及外部化配置
  • Absolutely no code generation and no requirement for XML configuration无代码生成、无需编写XML
SpringBoot是整合Spring技术栈的一站式框架
SpringBoot是简化Spring技术栈的快速开发脚手架
2.2、SpringBoot缺点
  • 人称版本帝,迭代快,需要时刻关注变化
  • 封装太深,内部原理复杂,不容易精通
3、时代背景 3.1、微服务 James Lewis and Martin Fowler (2014) 提出微服务完整概念。https://martinfowler.com/microservices/
In short, the** microservice architectural style** is an approach to developing a single application as a suite of small services, each running in its own process and communicating with **lightweight **mechanisms, often an **HTTP **resource API. These services are built around business capabilities and independently deployable by fully automated deployment machinery. There is a bare minimum of centralized management of these services, which may be written in different programming languages and use different data storage technologies.-- James Lewis and Martin Fowler (2014)
  • 微服务是一种架构风格
  • 一个应用拆分为一组小型服务
  • 每个服务运行在自己的进程内,也就是可独立部署和升级
  • 服务之间使用轻量级HTTP交互
  • 服务围绕业务功能拆分
  • 可以由全自动部署机制独立部署
  • 去中心化,服务自治。服务可以使用不同的语言、不同的存储技术
将一个大型服务拆分成一个个微服务,这就又涉及到分布式的问题,随之而来给分布式带来一系列困难。
3.2、分布式 #|SpringBoot2学习笔记一--Spring与SpringBoot2
文章图片

分布式的困难
  • 远程调用
  • 服务发现
  • 负载均衡
  • 服务容错
  • 配置管理
  • 服务监控
  • 链路追踪
  • 日志管理
  • 任务调度
分布式的解决
  • SpringBoot + SpringCloud
#|SpringBoot2学习笔记一--Spring与SpringBoot2
文章图片

3.3、云原生 【#|SpringBoot2学习笔记一--Spring与SpringBoot2】原生应用如何上云。 Cloud Native
上云的困难
  • 服务自愈
  • 弹性伸缩
  • 服务隔离
  • 自动化部署
  • 灰度发布
  • 流量治理
上云的解决
#|SpringBoot2学习笔记一--Spring与SpringBoot2
文章图片

4、如何学习SpringBoot 4.1、官网文档架构 #|SpringBoot2学习笔记一--Spring与SpringBoot2
文章图片

#|SpringBoot2学习笔记一--Spring与SpringBoot2
文章图片

查看版本新特性;
https://github.com/spring-projects/spring-boot/wiki#release-notes
#|SpringBoot2学习笔记一--Spring与SpringBoot2
文章图片

    推荐阅读