一、Spring与SpringBoot

1. Spring能做什么

1.1. Spring的生态

https://spring.io/projects/spring-boot

在这里插入图片描述

  1. 微服务: 通过可独立开发的微服务,快速交付生产级别的功能模块;
  2. 响应式编程: Spring的异步、无阻塞体系结构,可以占用少量线程资源运行高吞吐量应用;
  3. 云应用: 通过微服务拆分为多个功能模块后,可以通过Spring Cloud开发分布式应用;
  4. Web应用: 通过Spring MVC开发安全和响应式的Web应用程序;
  5. 无服务(FaaS): “功能即服务”,以功能的形式来构建、运行和管理应用,应用上传至云平台,按需分配服务器,无需求时不分配,节省成本;
  6. 事件驱动: 分布式应用根据业务事件流程创建实时数据流,实时响应业务事件;
  7. 批处理: 可以通过自动化任务离线处理数据。

1.2. Spring5重大升级

1.2.1. 响应式编程

在这里插入图片描述

Spring提供了两个并行的技术栈:

  • 传统的Servlet API,带有Spring MVC和Spring Data;
  • 新型的利用Spring WebFlux和Spring Data的响应式存储的响应式技术栈。

Spring Security对这二者都支持。

1.2.2. 内部源码设计

基于Java8的一些新特性重新设计源码架构,因此Spring Boot2必须要使用JDK8。

  • 如:接口默认实现: 在Java8之后,接口中也可以添加非抽象方法了,只要用关键字default进行修饰。实现了该接口的类都可以调用接口的default方法,这样可以使得各种实现类不需要再实现接口里大量的用不着的方法。

    过去Spring框架使用的是 适配器模式 来解决这个问题,用各种适配器类Adapter来默认实现接口所有方法,再让实现类来继承适配器类。

    接口:

    interface MyInterface {
    	// 抽象方法
        void abstractMethod();
    	// 默认方法
        default void defaultMethod(){
            System.out.println("接口默认实现方法");
        }
    }
    

    测试类:

    public class MyInterfaceTest {
        public static void main(String[] args) {
    	    // lambda表达式实现接口
            MyInterface myInterface = () -> {};
            myInterface.defaultMethod(); // 接口默认实现方法
        }
    }
    

2. 为什么用Spring Boot

Spring Boot makes it easy to create stand-alone, production-grade Spring based Applications that you can “just run”.
Spring Boot能轻松地创建出独立的、生产级别的、可快速部署的Spring应用。

Spring Boot是一个顶层框架,它底层整合了Spring生态的其它框架,是简化Spring技术栈的快速开发脚手架。

2.1. Spring Boot的优点

  1. 创建独立Spring应用;
  2. 内嵌Tomcat、Jetty或Undertow等web服务器(无需部署WAR文件);
  3. 提供starter自动化依赖,简化构建配置;
  4. 自动化配置Spring以及第三方功能;
  5. 提供生产级别的监控、健康检查及外部化配置;
  6. 无代码生成、无需编写XML。

2.2. SpringBoot缺点

  1. 人称版本帝,迭代快,需要时刻关注变化;
  2. 封装太深,内部原理复杂,不容易精通。

3. 时代背景

3.1. 微服务

https://martinfowler.com/microservices/
2014年,James Lewis和Martin Fowler提出微服务完整概念。

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)

  1. 微服务是一种架构风格;
  2. 一个应用拆分为一组小型服务;
  3. 每个服务运行在自己的进程内,也就是可独立部署和升级;
  4. 服务之间使用轻量级HTTP交互;
  5. 服务围绕业务功能拆分;
  6. 可以由全自动部署机制独立部署;
  7. 去中心化,服务自治。服务可以使用不同的语言、不同的存储技术。

3.2. 分布式

3.2.1. 分布式的困难

  1. 远程调用: 通过HTTP协议轻量级交互;
  2. 服务发现: 发现哪些台服务器是好的;
  3. 负载均衡: 一众好的服务器里选择一个调用;
  4. 服务容错: 当一个服务器调用失败时,选择备选服务器并返回值告知;
  5. 配置管理: 建立配置中心,在一处修改配置,各服务器代码自动同步配置;
  6. 服务监控: 对整个分布式应用各个微服务的资源消耗、健康状况等进行监控;
  7. 链路追踪: 一条逐个调用的链路中某个节点出了问题,可以追踪到之前调用的整条链路;
  8. 日志管理: 对整个分布式应用提供统一的日志管理;
  9. 任务调度: 执行定时任务,个别触发或全部触发,并行方式触发或串行方式触发。

3.2.2. 分布式的解决

SpringBoot + SpringCloud:

在这里插入图片描述

  • Spring Boot——创建一切: Spring Boot旨在通过最少的Spring前期配置使项目尽快启动并运行;
  • Spring Cloud——协调一切: Spring Cloud是基于Spring Boot构建的企业级Java创新方式,为微服务带来弹性、可靠性和协调性,从而简化了分布式微服务风格的架构;
  • Spring Cloud Data Flow——连接一切: 实现万物互联(移动设备、传感器、可穿戴设备、汽车等),提供用于创建可组合的数据微服务的统一服务,这些服务提供了处理流和基于ETL的数据的方式。

4. 如何学习Spring Boot

4.1. 官网文档架构

https://docs.spring.io/spring-boot/docs/current/reference/html/index.html
在这里插入图片描述

4.2. 查看版本新特性

https://github.com/spring-projects/spring-boot/wiki#release-notes
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值