第1章 Spring Boot到底是什么?

 

很多初次接触Spring Boot的同学估计都有一个问题?Spring Boot到底是什么? 它和Spring框架有什么关系?

其实简单的理解Spring Boot可以认为是“约定配置好一批默认参数的”Spring框架(虽然这并不算很准确,但可以在学习初期帮助我们理解)。Spring Boot 集成了绝大部分目前流行的开发框架,就像Java开发中常用的Maven项目集成了所有的JAR包一样,Spring Boot集成了几乎所有的框架,可以让开发人员快速搭建Spring项目。

在Spring Boot出现之前

在Spring Boot框架出现之前, Java 企业级开发领域使用的最多的就是Spring框架,Spring框架的出现使得开发者无需开发重量级的Enterprise JavaBean,对的就是大名鼎鼎的EJB。Spring框架通过控制反转(IOC)和面向切面编程(AOP)的思想取代了EJB臃肿、低效的开发模式。

但是多年以来,随着Spring 的飞速发展,Spring不断添加新的功能、组件,Spring 变得越来越复杂,越来越笨重。终于有一天屠龙勇士终成恶龙,Spring 框架逐渐变得像EJB一样复杂、笨重。

Spring Boot应运而生

Spring Boot在Spring框架基础上,默认将一些常用的配置,配置好了默认值;这就是Spring Boot的核心思路之一“约定优于配置”的原则这样就一下子将开发人员从Spring繁杂的配置工作中解放出来了,使得开发人员可以以更简单、更方便的方式使用Spring的中组件。

也就是说Spring Boot并不是替代Spring 框架的解决方案,而是基于Spring 框架的用于提升Spring开发体验的工具。Spring Boot使用“约定优于配置”的思想,将默认配置配置完毕后,基本上可以达到接近“开箱即用”的效果,同时Spring Boot还集成了很多常用的第三方库配置,例如Redis、JDBC、Mail等,使得用户可以更有效率的开发业务逻辑。

Spring Boot的优点

  • 内置Servlet容器一键部署:传统的Spring 应用部署是,通常会将应用打包成WAR包并且部署到Tomcat、Jetty 或者Undertow等服务器中。而Spring Boot框架内嵌了Tomcat、Jetty和Undertow服务器,能够直接打包成可执行的JAR文件独立运行,省去部署的麻烦,另外还支持Jenkins、Docker轻松实现自动化运维。

  • 简化依赖配置快速构建应用:在构建Spring应用时只需要添加相应的场景依赖,Spring Boot就会根据添加的的依赖自动进行配置,可以快速基础各种解决方案。另外可以使用Spring Initializr快速创建项目,省去了直接使用Spring时繁琐的手工初始配置。Spring Boot框架内部实现了与Spring 以及其他常用第三方库的整合连接,并提供

  • 自带运维监控功能:Spring Boot自带Actuator监控组件,可以轻松监控服务的各项状态,帮助开发和运维人员定位系统问题。另外Spring Boot还支持外部化配置,以便使用同一套代码运行在不同的环境。

Spring、Spring Boot 和Spring Cloud的关系

现在各个企业的Java 开发领域各种“Spring”大行其道。资深研发工程师对各种Spring XX 熟练掌握,信手拈来,并且平时工作交流中也是各种相关术语,对于有经验者当然容易理解,但是对于越来越多的加入Spring开发大军中的新人来说,经常被各种Spring、Spring Boot、SpringCloud 绕的头晕脑胀。今天我们就详细解释一下

在Spring出现之前曾开发JAVA EE应用时采用EJB开发,EJB的入门理解难度较高,开始的学习和应用非常的艰苦。EJB要严格地实现各种不同类型的接口,类似的或者重复的代码大量存在。而配置也是复杂和单调,进行对象查找的代码也是单调而枯燥。虽然有一些开发工作随着xdoclet的出现,而有所缓解,但是学习EJB的高昂代价,和极低的开发效率,极高的资源消耗,都造成了EJB的使用困难。而Spring出现的初衷就是为了解决类似的这些问题。Spring其实是一个提供了更完善开发环境的一个框架,可以为POJO(Plain Ordinary Java Object)对象提供企业级的服务。其核心是控制反转(Inversion of Control, Ioc)和面向切面编程(Aspect Oriented Programming,AOP),Spring在这两大核心功能上不断发展,最终成为了企业JAVA开发领域的实际统治者。

Spring Boot是在Spring的基础上为了简化Spring应用的创建、运行、调试、部署,它将目前各种比较成熟的服务框架和第三方组件组合起来,按照“约定优于配置”的设计思想进行封装,屏蔽掉复杂的配置和实现,最终给开发者提供一套简单、易用、易维护的企业级JAVA系统开发工具包,让开发者更容易地使用Spring。其最大的价值是“简化”,让Spring更加方便的使用,可以认为是一套预先配置好的开箱即可用的Spring 框架。

Spring Cloud又是什么呢?大家是否发现近些年来微服务开发思想在企业开发领域大行其道,有点万物皆要“微服务化”的趋势。但是微服务开发带来了好处的同时也引入了麻烦,项目采用了微服务架构之后,会出现非常多的微服务,特别是大型项目,微服务数目可能多得数不过来,这就引发了一个新的问题:如何管理这些微服务?Spring Cloud就是一套分布式微服务治理框架,可以说是这些微服务的中央管理系统。Spring Cloud提供了各种组件和方案来治理与维护整个微服务系统,比如服务之间的通信、熔断、监控等。Spring Cloud利用Spring Boot的集成了一系列开源组件,在微服务架构中对外提供了一套服务治理的解决方案。

​三者之间的关系

名词解释:

IoC(Inversion of Control)即控制反转:如何理解“控制反转”呢?首先我们需要知道反转的是什么,是由谁来控制。Spring框架出现之前,在JAVA面向对象的开发中,开发者需要通过new关键字完成对Object的创建。Spring框架诞生后,是通过Spring容器来管理对象的,因此Object的创建是通过Spring来完成的。注意看这里控制对象的主体变化了,由开发者变成了Spring容器,所以控制反转指的是由开发者来控制创建对象变成了由Spring容器来控制创建对象,创建对象和销毁对象的过程都由Spring来控制。这就是控制反转,另外我们还可以推论出以Spring框架为开发基础的应用尽量不要自己创建对象,应全部交由Spring容器管理。

DI(Dependency Injection)称为依赖注入。在JAVA程序中,类与类之间的耦合非常频繁,如Class A需要依赖Class B的对象b,Class B又需要依赖Class C。而基于Spring框架的开发,在Class A中不需要显式地使用new关键字新建一个对象b,只需在对象b的声明之上加一行注解@Autowired,这样在Class A用到b时,Spring容器会主动完成对象b的创建和注入。这就是Class A依赖Spring容器的注入。通过上面的分析,我们可以发现IoC和DI其实是同一概念从不同角度的理解。

AOP(Aspect Oriented Programming)面向切面编程,简单的说就是在代码执行过程中,动态嵌入其他代码,AOP实际是面向对象编程的一种完善和补充。是一种可以通过预编译方式和运行其动态代理实现在不修改源代码的情况下给程序动态统一添加某种特定功能的技术。

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

陈小房

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值