【软帝学院】Spring Boot 是什么?为什么说java程序员必须要掌握Spring Boot ?

Spring Boot 是什么?为什么说java程序员必须要掌握Spring Boot

我们从Spring Boot 诞生的背景是什么?Spring 企业又是基于什么样的考虑创建 Spring Boot? 企业使用 Spring Boot会带来什么样变化?来分析

Spring 历史

说起 Spring Boot 我们不得不先了解一下 Spring 这个企业,不仅因为 Spring Boot 来源于 Spirng 大家族,而且 Spring Boot 的诞生和 Sping 框架的发展息息相关。

时间回到2002年,当时正是 Java EE 和 EJB 大行其道的时候,很多知名公司都是采用此技术方案进行项目开发。这时候有一个美国的小伙子认为 EJB 太过臃肿,并不是所有的项目都需要使用 EJB 这种大型框架,应该会有一种更好的方案来解决这个问题。

为了证明他的想法是正确的,于2002年10月甚至写了一本书《 Expert One-on-One J2EE 》,介绍了当时 Java 企业应用程序开发的情况,并指出了 Java EE 和 EJB 组件框架中存在的一些主要缺陷。在这本书中,他提出了一个基于普通 Java 类和依赖注入的更简单的解决方案。

Spring Boot 的诞生

随着使用 Spring 进行开发的个人和企业越来越多,Spring 也慢慢从一个单一简洁的小框架变成一个大而全的开源软件,Spring 的边界不断的进行扩充,到了后来 Spring 几乎可以做任何事情了,市面上主流的开源软件、中间件都有 Spring 对应组件支持,人们在享用 Spring 的这种便利之后,也遇到了一些问题。

Spring 每集成一个开源软件,就需要增加一些基础配置,慢慢的随着人们开发的项目越来越庞大,往往需要集成很多开源软件,因此后期使用 Spirng 开发大型项目需要引入很多配置文件,太多的配置非常难以理解,并容易配置出错,到了后来人们甚至称 Spring 为配置地狱。

什么是 Spring Boot

Spring Boot 是由 Pivotal 团队提供的全新框架,其设计目的是用来简化新 Spring 应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。用我的话来理解,就是 Spring Boot 其实不是什么新的框架,它默认配置了很多框架的使用方式,就像 maven 整合了所有的 jar 包,Spring Boot 整合了所有的框架

Spring Boot 简化了基于 Spring 的应用开发,通过少量的代码就能创建一个独立的、产品级别的 Spring 应用。 Spring Boot 为 Spring 平台及第三方库提供开箱即用的设置,这样你就可以有条不紊地开始。Spring Boot 的核心思想就是约定大于配置,多数 Spring Boot 应用只需要很少的 Spring 配置。采用 Spring Boot 可以大大的简化你的开发模式,所有你想集成的常用框架,它都有对应的组件支持。

Spring Boot 特性

使用 Spring 项目引导页面可以在几秒构建一个项目

方便对外输出各种形式的服务,非常简洁的安全策略集成

支持关系数据库和非关系数据库

支持运行期内嵌容器,如 Tomcat、Jetty

强大的开发包,支持热启动

自动管理依赖

自带应用监控

支持各种 IED,如 IntelliJ IDEA 、NetBeans

使用 Spring Boot 的优势

使用 Spring Boot 开发项目,会给我们带来非常美妙的开发体验,可以从以下几个方面展开来说明

Spring Boot 让开发变得更简单

Spring Boot 对开发效率的提升是全方位的,我们可以简单做一下对比:

在没有使用 Spring Boot 之前我们开发一个 web 项目需要做哪些工作:

1)配置 web.xml,加载 Spring 和 Spring mvc

2)配置数据库连接、配置 Spring 事务

3)配置加载配置文件的读取,开启注解

4)配置日志文件

n) 配置完成之后部署 tomcat 调试

可能你还需要考虑各个版本的兼容性,jar 包冲突的各种可行性。

那么使用 Spring Boot 之后我们需要开发一个 web 项目需要哪些操作呢?

1)登录网址选择对应的组件直接下载

2)导入项目,直接开发

上面的 N 步和下面的2步形成巨大的反差,这仅仅只是在开发环境搭建的这个方面。

Spring Boot 使测试变得更简单

Spring Boot 对测试的支持不可谓不强大,Spring Boot 内置了7种强大的测试框架:

JUnit: 一个 Java 语言的单元测试框架

Spring Test & Spring Boot Test:为 Spring Boot 应用提供集成测试和工具支持

AssertJ:支持流式断言的 Java 测试框架

Hamcrest:一个匹配器库

Mockito:一个 java mock 框架

JSONassert:一个针对 JSON 的断言库

JsonPath:JSON XPath 库

我们只需要在项目中引入spring-boot-start-test依赖包,就可以对数据库、Mock、 Web 等各种情况进行测试。

Spring Boot Test 中包含了我们需要使用的各种测试场景,满足我们日常项目的测试需求。

Spring Boot 让配置变得更简单

Spring Boot 让配置变简单,说到这里我们就需要了解一下 Spring Boot 的核心思想:约定优于配置。那么什么是约定优于配置呢?约定优于配置(convention over configuration),也称作按约定编程,是一种软件设计范式,旨在减少软件开发人员需做决定的数量,获得简单的好处,而又不失灵活性。

Spring Boot 让部署变得更简单

说起 Spring Boot 让部署变简单,就不得不说 Spring Boot 内嵌容器。内嵌容器不只让部署变得简单,其实在开发调试阶段也会带来非常大的便利性,对比以往开发 Web 项目时配置 Tomcat 的繁琐,会让大家使用 Spring Boot 内嵌容器开发时有更深的感触。使用 Spring Boot 开发 Web 项目,让我们不需要关心容器的环境问题,专心写业务代码即可。

Spring Boot 让监控变得更简单

可以说 Spring Boot 就是一款自带监控的开源软件,在设计之初就考虑到应用的监控问题,专门提供了一款监控组件来完成这个工作,这个组件就是

Spring Boot Actuator 。

Spring Boot Actuator 是 Spring Boot 提供的对应用系统监控的集成功能,可以查看应用配置的详细信息,例如自动化配置信息、创建的 Spring beans 以及一些环境属性等。基于 Spring boot actuator 做出了一款强大的监控软件,这个软件就是 Spring Boot admin 。

Spring Boot Admin 是一个管理和监控 Spring Boot 应用程序的开源软件。每个应用都认为是一个客户端,通过 HTTP 或者使用 Eureka 注册到 admin server 中进行展示,Spring Boot Admin UI 部分使用 AngularJs 将数据展示在前端。

Spring Boot Admin 是一个针对 spring-boot 的 actuator 接口进行UI美化封装的监控工具。他可以:在列表中浏览所有被监控 spring-boot 项目的基本信息,详细的 Health 信息、内存信息、JVM 信息、垃圾回收信息、各种配置信息(比如数据源、缓存列表和命中率)等,还可以直接修改logger的level。

简单、直观、易用是它的特点,针对一些特殊情况还可以提供报警服务。所以说使用 Spring Boot Actuator 解决了单个 Spring Boot 的监控问题,使用 Spring Boot Admin 就是解决了整个集群监控的问题。

Spring 、Spring Boot 和 Spring Cloud 的关系

Spring 最初最核心的两大核心功能 Spring Ioc 和 Spring Aop 成就了 Spring,Spring 在这两大核心的功能上不断的发展,才有了 Spring 事务、Spirng Mvc 等一系列伟大的产品,最终成就了 Spring 帝国,到了后期 Spring 几乎可以解决企业开发中的所有问题。

Spring Boot 是在强大的 Spring 帝国生态基础上面发展而来,发明 Spring Boot 不是为了取代 Spring ,是为了让人们更容易的使用 Spring 。所以说没有 Spring 强大的功能和生态,就不会有后期的 Spring Boot 火热, Spring Boot 使用约定优于配置的理念,重新重构了 Spring 的使用,让 Spring 后续的发展更有生命力。

Spring Cloud 是一系列框架的有序集合。它利用 Spring Boot 的开发便利性巧妙地简化了分布式系统基础设施的开发,如服务发现注册、配置中心、消息总线、负载均衡、断路器、数据监控等,都可以用 Spring Boot 的开发风格做到一键启动和部署。

Spring 并没有重复制造轮子,它只是将目前各家公司开发的比较成熟、经得起实际考验的服务框架组合起来,通过 Spring Boot 风格进行再封装屏蔽掉了复杂的配置和实现原理,最终给开发者留出了一套简单易懂、易部署和易维护的分布式系统开发工具包。

我们可以这样来理解,正是由于 Spring Ioc 和 Spring Aop 两个强大的功能才有了 Spring ,Spring 生态不断的发展才有了 Spring Boot ,使用 Spring Boot 让 Spring 更易用更有生命力,Spring Cloud 是基于 Spring Boot 开发的一套微服务架构下的服务治理方案。

原文地址:https://www.cnblogs.com/heqingxiaohuo/p/12104187.html

时间: 2024-10-11 04:37:06

【软帝学院】Spring Boot 是什么?为什么说java程序员必须要掌握Spring Boot ?的相关文章

Java程序员必须掌握的Spring依赖管理原理

Spring依赖注入 依赖注入(Dependency Injection)的意思就是对象通过构造器函数参数,工厂方法的参数,或者成员属性,定义了对象的依赖对象:容器在创建该对象时会负责注入这些依赖.这个过程是控制反转的,即不是由即将创建的对象来管理自己的依赖的发现和实例化,而是有Spring容器来实现. 在Spring中依赖注入有两种形式,第一种就是基于构造函数的注入,即通过调用构造函数,传入参数,也就是依赖来完成整个依赖注入流程:第二种就是基于setter方法的注入. 构造函数的参数的匹配,要

一道78%的Java程序员搞不清的Spring bean面试题

熟悉Spring开发的朋友都知道Spring提供了5种scope分别是singleton.prototype.request.session.global session.如下图是官方文档上的截图,感兴趣的朋友可以进去看看这五种分别有什么不同.今天要介绍的是这五种中的前两种,也是Spring最初提供的bean scope singleton 和 prototype.Spring官方文档介绍如下图: 单例bean与原型bean的区别 如果一个bean被声明为单例的时候,在处理多次请求的时候在Spr

软帝学院教你:初识springboot

软帝学院教你:初识springbootSpring Boot简化了基于Spring的应用开发.你可以很容易地创建一个独立的,产品 级别的Spring应用. 我们为Spring平台及第三方库提供开箱即用的设置,这样你就 可以有条不紊地开始.多数Spring Boot应用只需要很少的Spring配置. 接下来我们开始第一个springboot应用,首先需要安装Java SDK 1.8 或更高版本 第一步通过maven创建应用SpringBoot-First,编辑pom文件,在文件中加入spring-

软帝学院教你Java Applet基础

软帝学院教你Java Applet基础 applet是一种Java程序.它一般运行在支持Java的Web浏览器内.因为它有完整的Java API支持,所以applet是一个全功能的Java应用程序. 如下所示是独立的Java应用程序和applet程序之间重要的不同: Java中applet类继承了 java.applet.Applet类 Applet类没有定义main(),所以一个 Applet程序不会调用main()方法, Applets被设计为嵌入在一个HTML页面. 当用户浏览包含Appl

软帝学院教你用java编写计算器(二)

软帝学院教你用java编写计算器(二) import java.awt.BorderLayout; import java.awt.GridBagLayout; import java.awt.GridLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JButton; import javax.swing.JFrame; import javax.

java程序员培训:为什么要用Spring含三大框架简介

文章来源:http://www.zretc.com/technologyDetail/476.html Spring作为三大框架之一,一直困惑她有什么用?为什么要使用Spring呢?(大部分来自网上,引用出处太多,恕不一一标明.). SSH在J2EE项目中表示了3种框架,即 Spring + Struts +Hibernate. Struts对Model,View和Controller都提供了对应的组件.Spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架,它由Rod Jo

中软国际Java程序员笔试题

1.谈谈final, finally, finalize的区别. final:修饰符(关键字)如果一个类被声明为final,意味着它不能再派生出新的子类,不能作为父类被继承.因此一个类不能既被声明为 abstract的,又被声明为final的.将变量或方法声明为final,可以保证它们在使用中不被改变.被声明为final的变量必须在声明时给定初值,而在以后的引用中只能读取,不可修改.被声明为final的方法也同样只能使用,不能重载. finally:在异常处理时提供 finally 块来执行任何

Java程序员需要具备的几个软实力,你具备了吗?

有很多关于Java程序员的调侃,比如"智商很高情商却很感人,思维缜密,极客,加班严重,没有对象只能new一个--",虽然不是所有Java程序员都是这样,但这也说明了Java程序员这个群体中存在这种情况.我身边的Java程序员小伙伴就有不少这种情况,我认为工作特点影响了这种性格标签. Java程序员的很多工作都是需要"单打独斗",任务分工之后每个人要独立完成部分功能设计,相互沟通比其他岗位少很多.小编的这篇文章能对于Java程序员避免愈发孤独的状态很有帮助.在工作之外

【软帝学院】一套好的java基础教学视频需要哪些有哪些内容

如今网上有很多java基础视频,这对于新人学java是很有帮助的,但是视频太多也对小白造成了困扰,不知道自己看的这套视频好吗,内容是否合格,适不适合新手看,我接下来便说一下一套合格的java基础视频应该有哪些内容. 一:Java编程基础 Java基础语法 职业导向训练概述.数据类型和运算符.时间管理.流程控制.数组 掌握Java语言的基础 Java面向对象 类和对象.封装.继承.多态.阶段练习-汽车租赁.抽象类和接口.阶段练习-图书销售管理.异常.职场写作力 掌握Java面向对象的思想及其特征