一、SpringBoot简介
Spring Boot 是所有基于 Spring Framework 5.0 开发的项目的起点。Spring Boot 的设计是为了让你尽可能快的跑起来 Spring 应用程序并且尽可能减少你的配置文件。
设计目的: 用来简化新 Spring 应用的初始搭建以及开发过程。
从最根本上来讲,Spring Boot 就是一些库的集合,它能够被任意项目的构建系统所使用。它使用 “习惯大于配置” (项目中存在大量的配置,此外还内置一个习惯性的配置)的理念让你的项目快速运行起来。用大佬的话来理解,就是 spring boot 其实不是什么新的框架,它默认配置了很多框架的使用方式,就像 maven 整合了所有的 jar 包,spring boot 整合了所有的框架,总结一下及几点:
- 为所有 Spring 开发提供一个更快更广泛的入门体验。
- 零配置。无冗余代码生成和XML 强制配置,遵循“约定大于配置” 。
- 集成了大量常用的第三方库的配置, Spring Boot 应用为这些第三方库提供了几乎可以零配置的开箱即用的能力。
- 提供一系列大型项目常用的非功能性特征,如嵌入式服务器、安全性、度量、运行状况检查、外部化配置等。
- Spring Boot 不是Spring 的替代者,Spring 框架是通过 IOC 机制来管理 Bean 的。Spring Boot 依赖 Spring 框架来管理对象的依赖。Spring Boot 并不是Spring 的精简版本,而是为使用 Spring 做好各种产品级准备
Spring Boot 在应用中的角色:
- Spring Boot 是基于 Spring Framework 来构建的,Spring Framework 是一种 J2EE 的框架(什么是 J2EE?)
- Spring Boot 是一种快速构建 Spring 应用
- Spring Cloud 是构建 Spring Boot 分布式环境,也就是常说的云应用
- Spring Boot 中流砥柱,承上启下
Springboot和spring、springcloud的联系
- Spring boot可以离开Spring Cloud独立使用开发项目,但是Spring Cloud离不开Spring boot,属于依赖的关系。
- Spring boot 是 Spring 的一套快速配置脚手架,可以基于spring boot 快速开发单个微服务
- Spring Cloud基于Spring Boot,为微服务体系开发中的架构问题,提供了一整套的解决方案——服务注册与发现,服务消费,服务保护与熔断,网关,分布式调用追踪,分布式配置管理等。
二、spring=>springboot变化的原因
学过Spring的都知道,Spring开发有非常头疼的三点:
以启动一个带Hibernate的Spring MVC为例。
- 依赖太多了,而且要注意版本兼容。这个应用,要添加10-20个依赖,Spring相关的包10多个,然后是Hibernate包,Spring与Hibernate整合包,日志包,json包一堆,而且要注意版本兼容性。
- 配置太多了,要配置注解驱动,要配置数据库连接池,要配置Hibernate,要配置事务管理器,要配置Spring MVC的资源映射,要在web.xml中配置启动Spring和Spring MVC等
- 部署和运行麻烦。要部署到tomcat里面。不能直接用java命令运行。
太多重复和大家都一样的配置了。
Spring Boot的哲学就是约定大于配置。既然很多东西都是一样的,为什么还要去配置。
- 通过starter和依赖管理解决依赖问题。
- 通过自动配置,解决配置复杂问题。
- 通过内嵌web容器,由应用启动tomcat,而不是tomcat启动应用,来解决部署运行问题。
三、springboot=>springcloud变化的原因
Spring Cloud体系就比较复杂了。基本可以理解为通过Spring Boot的三大魔法,将各种组件整合在一起,非常简单易用。
- Eureka:各个服务启动时,Eureka Client都会将服务注册到Eureka Server,并且Eureka Client还可以反过来从Eureka Server拉取注册表,从而知道其他服务在哪里
- Ribbon:服务间发起请求的时候,基于Ribbon做负载均衡,从一个服务的多台机器中选择一台
- Feign:基于Feign的动态代理机制,根据注解和选择的机器,拼接请求URL地址,发起请求
- Hystrix:发起请求是通过Hystrix的线程池来走的,不同的服务走不同的线程池,实现了不同服务调用的隔离,避免了服务雪崩的问题
- Zuul:如果前端、移动端要调用后端系统,统一从Zuul网关进入,由Zuul网关转发请求给对应的服务
SpringBoot 总结:
- Spring Boot来简化Spring应用开发,约定大于配置, 去繁从简,just run就能创建一个独立的,产品级别的应用
- 背景:
J2EE笨重的开发、繁多的配置、低下的开发效率、 复杂的部署流程、第三方技术集成难度大。
-
解决方案:“Spring全家桶”时代。 Spring Boot =>J2EE一站式解决方案、 Spring Cloud =>分布式整体解决方案
-
优点:
- – 快速创建独立运行的Spring项目以及与主流框架集成
- – 使用嵌入式的Servlet容器,应用无需打成WAR包
- – starters自动依赖与版本控制
- – 大量的自动配置,简化开发,也可修改默认值
- – 无需配置XML,无代码生成,开箱即用
- – 准生产环境的运行时应用监控
- – 与云计算的天然集成
单体应用:
微服务: