1.Spring生态简介:
1.1.Spring生态:
1.2.Spring家族覆盖的功能范围:
- web开发:
- 数据访问:
- 安全控制:
- 分布式:
- 消息服务:
- 移动开发:
- 批处理:
- …
1.3.Spring5中的响应式编程:
- 1.在Spring5中有了很大的升级,它引入
响应式编程
,他是根据设计模式中的适配器模式
; - 2.因为
在java8中引入了接口的默认实现
。所以当用到什么方法时,就重写哪个方法就可以直接使用。
2.SpringBoot:
2.1.Spring Boot有关网址:
2.2.SpringBoot 各版本之间的差异:
2.2.Spring Boot概述:
- 1.SpringBoot是Spring家族中的一个成员,是由Pivotal团队提供的全新框架,其设计
目的是用来简化Spring应用的初始搭建以及开发过程
; - 2.Spring Boot简化了spring的开发,可以轻松创建独立的、生产级的基于 Spring 的应用程序,不需要在书写大量的XML配置工作,
无代码生成,开箱即用
,是属于产品级别的应用,是简化Spring应用开发的一个框架; - 3.Spring Boot是
J2EE的一站式
解决方案,而Spring Cloud 是分布式的整体解决方案 - 4.可以
快速
创建独立运行的Spring项目,可以与主流的一些框架集成
,如Redis,MyBatis,Shiro,JWT等 - 5.使用了嵌入式的Servlet 容器,意思就是在开发web项目,
无需打成WAR包
,就可以直接打成jar包。用java -jar
命令可以直接来运行;SpringBoot内嵌的tomcat, jetty , Undertow
这些web服务器 - 6.
在场景启动器starters中可以自动导入依赖与进行版本控制
;当用哪个模块的功能时候,需要哪个模块的启动器。比如说我们用到了WEB,那就有web启动器,web功能里面所需要的的ar包以及jar包的版本,web启动器starters都会自动的给我们配置好 - 7.可以进行大量的
自动配置
,自动配置Spring与第三方功能;可以简化开发,然后我们也可以更改一些默认值 - 8.它还提供了准
生产环境的运行时应用监控
,提供了健康检查, 统计,外部化配置 - 9.与
云计算
的天然集成
2.3.Spring、SpringMVC、SpringBoot 的关系:
- 1.他们的关系大概是:
Spring Boot > Spring > Spring MVC
- 2.Spring MVC
只是 Spring 处理 WEB 层请求的一个模块/组件
, Spring MVC 的基石是Servlet
- 3.Spring 的核心是 IOC 和 AOP, IOC 提供了依赖注入的容器 ,
AOP 解决了面向切面编程
- 4.Spring Boot 是为了简化开发, 推出的封神框架(
约定优于配置[COC],简化了 Spring 项目的配置流程
), SpringBoot 包含很多组件/框架,Spring就是最核心的内容之一,也包含 SpringMVC - 5.Spring 家族,有众多衍生框架和组件例如 boot、security、jpa 等, 他们的基础都是 Spring
2.4.如何理解:约定优于配置
- 1.
约定优于配置(Convention over Configuration/COC)
,又称按约定编程,是一种软件设计规范, 本质上是对系统、类库或框架中一些东西假定一个大众化合理的默认值(缺省值) - 2.例如在模型中存在一个名为 User 的类,那么对应到数据库会存在一个名为 user 的表,只有在偏离这个约定时才需要做相关的配置 (例如你想将表名命名为 t_user 等非 user 时才需要写关于这个名字的配置)
- 3.简单来说就是
假如你所期待的配置与约定的配置一致,那么就可以不做任何配置,约定不符合期待时, 才需要对约定进行替换配置
- 4.约定优于配置理念:约定其实就是一种规范,遵循了规范,那么就存在通用性,存在通用性,那么事情就会变得相对简单,程序员之间的沟通成本会降低,工作效率会提升,合作也会变得更加简单
3.微服务、分布式、云原生概念的理解:
3.1.微服务
- 1.微服务是
一种架构风格
- 2.
一个应用拆分为一组小型服务
- 3.每个服务运行在自己的进程内,也就是可独立部署和升级
- 4.
服务之间使用轻量级HTTP交互
- 5.服务围绕业务功能拆分
- 6.可以由
全自动部署机制
独立部署 - 7.
去中心化,服务自治
。服务可以使用不同的语言、不同的存储技术
3.2.分布式:
a.分布式概念:
- 1.各个微服务之间相互调用,组成一个大型的分布式网
b.分布式的困难
- 远程调用
- 服务发现
- 负载均衡
- 服务容错
- 配置管理
- 服务监控
- 链路追踪
- 日志管理
- 任务调度
- …
c.分布式的解决:SpringBoot + SpringCloud
d.微服务架构和分布式架构的区别:
- 含义不同
- 1.
微服务架构
:微服务架构风格是一种将一个单一应用程序开发为一组小型服务的方法,每个服务运行在自己的进程中,服务间通信采用轻量级通信机制(通常用HTTP资源API)。这些服务围绕业务能力构建并且可通过全自动部署机制独立部署。这些服务共用一个最小型的集中式的管理,服务可用不同的语言开发,使用不同的数据存储技术。 - 2.
分布式架构
:分布式系统是若干独立计算机的集合,这些计算机对用户来说就像单个相关系统,即整个系统是由不同的计算机组成,而用户是无感知的,就像访问一台计算机一样。这里强调的是系统由不同物理上分离的计算机(服务器)组成
。
- 概念层面不同
- 1.微服务架构:微服务是设计层面的东西,一般考虑如何将系统从逻辑上进行拆分,也就是垂直拆分。微服务可以是分布式的,即可以将不同服务部署在不同计算机上,当然如果量小也可以部署在单机上。
- 2.分布式架构:分布式是部署层面的东西,即强调物理层面的组成,即系统的各子系统部署在不同计算机上。
- 解决问题不同
- 1.微服务架构:微服务解决的是系统复杂度问题: 一般来说是业务问题,即在一个系统中承担职责太多了,需要打散,便于理解和维护,进而提升系统的开发效率和运行效率,微服务一般来说是针对应用层面的。微服务如果用在其它系统,如存储系统感觉怪怪的,就像说Mysql集群是微服务的,总觉得哪里不舒服。
- 2.分布式架构:分布式解决的是系统性能问题: 即解决系统部署上单点的问题,尽量让组成系统的子系统分散在不同的机器上进而提高系统的吞吐能力。
- 部署方式不同
- 1.微服务架构:微服务的应用可以部署在是同一个服务器,不一定是分散在多个服务器上。微服务架构是一项在云中部署应用和服务的新技术。微服务架构是一种架构模式,它将一个复杂的大型应用程序划分成多个微服务,这些小型服务都在各自独立的进程中运行。
- 2.分布式架构:分布式是将一个大的系统划分为多个业务模块,这些业务模块会分别部署到不同的机器上,通过接口进行数据交互。
- 耦合度不同
- 1.微服务相比分布式服务来说,它的粒度更小,服务之间耦合度更低,由于每个微服务都由独立的小团队负责,因此它敏捷性更高,分布式服务最后都会向微服务架构演化,这是一种趋势,不过服务微服务化后带来的挑战也是显而易见的,例如服务粒度小,数量大,后期运维将会很难
- 分布式是否属于微服务?
答案是属于
。- 微服务的意思也就是将模块拆分成一个独立的服务单元通过接口来实现数据的交互。但是微服务不一定是分布式,因为微服务的应用不一定是分散在多个服务器上,他也可以是同一个服务器。这也是分布式和微服务的一个细微差别。
3.3.云原生
- 1.原生应用如何上云: Cloud Native
- 2.上云的困难
- 服务自愈
- 弹性伸缩
- 服务隔离
- 自动化部署
- 灰度发布
- 流量治理
- …
- 3.点击查看:云原生的解决方案
4.SpringBoot实现HelloWord:
4.1.编码实现:
-
1.创建空项目:
-
2.更改maven版本:
-
3.创建新模块:
-
4.创建请求接口:
-
5.浏览器中请求测试接口:
4.2.Spring与SpringBoot程序对比:
类/配置文件 | Spring | SpringBoot |
---|---|---|
pom文件中的坐标 | 手工添加 | 勾选添加 |
web3.0配置 | 手工制作 | 无 |
Spring/SpringMVC配置类 | 手工制作 | 无 |
控制器 | 手工制作 | 手工制作 |