Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新 Spring 应用的初始搭建以及开发过程,该框架使用了特定的方式来进行配置,从而使开发人员再也不须要定义样板化的配置。 Spring Boot默认配置了不少框架的使用方式,就像 Maven整合了全部的Jar包,Spring Boot整合了全部的框架。它的核心设计思想是∶约定优于配置,Spring Boot全部开发细节都是依据此思想进行实现的。数据库
约定优于配置(Convention Over Configuration),也称做按约定编程,是一种软件设计范式,旨在减小软件开发人员需作决定的数量、得到简单的好处,而又不失灵活性。
本质是说,开发人员仅需规定应用中不符约定的部分。例如,若是模型中有个名为 User 的类,那么数据库中对应的表就会默认命名为 user。只有在偏离这一约定时,例如将该表命名为"user info",才需写有关这个名字的配置。咱们能够按照这个思路来设想,咱们约定 Controller 层就是 Web 请求层能够省略 MVC的配置;咱们约定在 Service 结尾的类自动注入事务,就能够省略了 Spring 的切面事务配置。在 Spring 体系中,Spring Boot JPA就是约定优于配置最佳实现之一,不须要关注表结构,咱们约定类名便是表名,属性名便是表的字段,String 对应varchar,long 对应 bigint,只有须要一些特殊要求的属性,咱们再单独进行配置,按照这个约定咱们能够将之前的工做大大简化。
Spring Boot 体系将约定优于配置的思想展示得淋漓尽致,小到配置文件、中间件的默认配置,大到内置容器、生态中的各类 Starters无不遵循此设计规则。Spring Boot 鼓励各软件组织方建立本身的Starter,建立 Starter 的核心组件之一就是 autoconfigure模块,也是 Starter 的核心功能,在启动的时候进行自动装配,属性默认化配置。能够说正是由于 Spring Boot 简化的配置和众多的 Starters 才让 Spring Boot 变得简单、易用、快速上手,也能够说正是约定优于配置的思想完全落地才让 Spring Boot 走向辉煌。Spring Boot 约定优于配置的思想让 Spring Boot 项目很是容易上手,让编程变得更简单,其实编程本该很简单,简单才是编程的美。编程
Spring Boot Starters 基于约定优于配置的理念来设计,Spring Boot Starter 中有两个核心组件∶ 自动配置代码和提供自动配置模块及其它有用的依赖。也就意味着当咱们项目中引入某个 Starter,即拥有了此软件的默认使用能力,除非咱们须要特定的配置,通常状况下我仅须要少许的配置或者不配置便可使用组件对应的功能。Spring Boot 由众多Starter 组成,随着版本的推移 Starter 家族成员也与日俱增。在传统 Maven 项目中一般将一些层、组件拆分为模块来管理,以便相互依赖复用,在 Spring Boot 项目中咱们则能够建立自定义 Spring Boot Starter 来达成该目的。
Spring Boot 拥有强大融合社区开源软件的能力,在没有使用 Spring Boot 以前,咱们须要按照每一个开源软件的特性,将对应的组件包集成到咱们的开发项目中,由于每一个组件的设计理念和开发团队都不一致,所以会有不少不一样的调用风格在咱们的项目中。Spring Boot 整合了主流的开源软件造成了一系列的 Starter,让咱们有了一致的编程体验来集成各类软件,Spring Boot 在集成的时候作了大量的优化,让咱们在集成的时候每每只须要不多的配置和代码就能够完成。能够说各类 Starters 就是 Spring Boot 最大的优点之一。Spring Boot 是一套全新的框架,它来自于 Spring你们族,所以 Spring 全部具有的功能它都有而且更容易使用;同时还简化了基于 Sp ring 的应用开发,经过少许的代码就能建立一个独立的、产品级别的 Spring 应用。安全
Spring Boot自己并不提供Spring框架的核心特性以及扩展功能,只是用于快速、敏捷地开发新一代基于Spring 框架的应用程序。同时它集成了大量经常使用的第三方库配置(如 Redis、MongoDB、JP A、RabbitMQ、Quartz等),Spring Boot 应用中这些第三方库几乎能够零配置进行开箱即用,大部分的Spring Boot应用都只须要很是少许的配置代码,开发者可以更加专一于业务逻辑。
使用 Spring Boot 开发项目,有如下几方面优点∶架构
从软件发展的角度来说,越简单的开发模式越流行,简单的开发模式解放出更多生产力,让开发人员能够避免将精力耗费在各类配置、语法所设置的门槛上,从而更专一于业务。这点上,Spring Boot已尽量地简化了应用开发的门槛。Spring Boot 所集成的技术栈,涵盖了各大互联网公司的主流技术,跟着 Spring Boot 的路线去学习,基本能够了解国内外互联网公司的技术特色。负载均衡
Spring最初核心的两大核心功能 Spring loC和 Spring Aop 成就了Spring,Spring在这两大核心功能上不断地发展,才有了Spring事务、Spring MVC等一系列伟大的产品,最终成就了Spring帝国,到了后期 Spring 几乎能够解决企业开发中的全部问题。
Spring Boot是在强大的 Spring 帝国生态基础上面发展而来,发明Spring Boot不是为了取代 Spring,是为了让人们更容易的使用 Spring。因此说没有 Spring强大的功能和生态,就不会有后期 Spring Boot 的火热,Spring Boot使用约定优于配置的理念,从新重构了Spring 的使用,让 Spring 后续的发展更有生命力。Spring Boot并无重复制造轮子,它只是将目前各家公司开发的比较成熟、经得起实际考验的服务框架组合起来,经过 Spring Boot风格进行再封装并屏蔽掉复杂的配置和实现原理,最终给开发者提供了一套简单易懂、易部署、易维护的分布式系统开发工具包。
Spring Cloud是一系列框架的有序集合,它利用 Spring Boot的开发便利性巧妙地简化了分布式系统基础设施的开发。服务发现注册、配置中心、消息总线、负载均衡、断路器、数据监控等,均可以用 Spring Boot 的开发风格作到一键启动和部署。Spring Cloud是为了解决微服务架构中服务治理而提供的具有一系列功能的开发框架,而且 Spring Cloud是彻底基于Spring Boot 而开发,Spring Cloud利用 Spring Boot特性整合了开源行业中优秀的组件,总体对外提供了一套在微服务架构中服务治理的解决方案。
综上咱们能够这样来理解,正是因为 Spring loC和 Spring Aop 两个强大的功能才有了Spring,Spring生态不断的发展才有了Spring Boot,使用 Spring Boot让Spring 更易用更有生命力,Spring Cloud是基于 Spring Boot 开发的一套微服务架构下的服务治理方案。框架