浅谈Java中Spring Boot的优势

 更新时间:2018年09月13日 14:47:56   投稿:laozhang  
在本篇文章中小编给大家分析了Java中Spring Boot的优势以及相关知识点内容,兴趣的朋友们可以学习参考下。

Spring Boot 是由 Pivotal 团队提供的全新框架,其设计目的是用来简化新 Spring 应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。 Spring Boot 简化了基于 Spring 的应用开发,通过少量的代码就能创建一个独立的、产品级别的 Spring 应用。

作为一名 Java 程序员如果你已经厌恶了传统的开发模式,希望有一个全新的框架可以提供快速开发,简单集成的编程体验,强烈建议你学习了解 Spring Boot 。Spring Cloud 未来随着 Kubernetes 和 Service Mesh 的发展可能会有所弱化,但是 Spring Boot 给开发带来的影响是深远的。

Spring Boot 的诞生

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

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

Spring 似乎也意识到了这些问题,急需有这么一套软件可以解决这些问题,这个时候微服务的概念也慢慢兴起,快速开发微小独立的应用变得更为急迫,Spring 刚好处在这么一个交叉点上,于 2013 年初开始的 Spring Boot 项目的研发,2014年4月,Spring Boot 1.0.0 发布。

上图为2014年到2018年 Spring Boot 的百度指数,可以看出 Spring Boot 2.0 的推出引发了搜索高峰。

Spring Boot 不是为了取代 Spring ,Spring Boot 基于 Spring 开发,是为了让人们更容易的使用 Spring。看到 Spring Boot 的市场反应,Spring 官方也非常重视 Spring Boot 的后续发展,已经将 Spring Boot 作为公司最顶级的项目来推广,放到了官网上第一的位置,因此后续 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)登录网址 http://start.spring.io/ 选择对应的组件直接下载

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 让配置变得更简单

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

本质是说,开发人员仅需规定应用中不符约定的部分。例如,如果模型中有个名为 User 的类,那么数据库中对应的表就会默认命名为 user。只有在偏离这一约定时,例如将该表命名为”user_info”,才需写有关这个名字的配置。

Spring Boot 体系将约定优于配置的思想展现得淋淋尽致,小到配置文件,中间件的默认配置,大到内置容器、生态中的各种 Starters 无不遵循此设计规则。Spring Boot 鼓励各软件组织方创建自己的 Starters ,创建 Starter 的核心组件之一就是 autoconfigure 模块,也是 Starter 的核心功能就是在启动的时候进行自动装配,属性默认化配置。

Spring Boot 让部署变得更简单

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

但内嵌容器对部署带来的改变其实更多,现在 Maven 、Gradle 已经成了我们日常开发必不可少的构建工具,使用这些工具很容易的将项目打包成 Jar 或者 War 包,在服务器上我们仅仅只需要一条命令就可以启动项目。Spring Boot 支持在启动的时候添加定制,比如设置应用的堆内存、垃圾回收机制、日志路径等等。

虚拟化技术的发展给我们带来了更多的可能性,我们可以利用容器化技术,将 Spring Boot 项目做成镜像,根据容器集群的策略来实现弹性扩容、动态部署等。所以 Spring Boot + Docker + Jenkins 会将 Spring Boot 项目的部署做得更简单化、智能化。

Spring Boot 让监控变得更简单

可以说 Spring Boot 就是一款自带监控的开源软件,在设计之初就考虑到应用的监控问题,专门提供了一款监控组件来完成这个工作,这个组件就是 Spring Boot Actuator 。Spring Boot Actuator 是 Spring Boot 提供的对应用系统监控的集成功能,可以查看应用配置的详细信息,例如自动化配置信息、创建的 Spring beans 以及一些环境属性等。

当然 Spring Boot Actuator 虽然可以监控一个 Spring Boot 应用的健康情况,实际上现在的系统都是需要很多的服务相互配合来完成工作,如何通过一个监控软件来监控所以的 Spring Boot 项目将变得比较紧迫。在开源界也有人意识到了这个问题,并且基于 Spring boot actuator 做出了一款强大的监控软件,这个软件就是 Spring Boot admin 。

使用 Spring Boot Admin 不仅可以监控 Spring Boot 项目,还可以监控 Spring Cloud 项目,因此使用了 Spring Boot 项目之后我们监控 Spring Boot 集群效果如下:

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

相关文章

  • Java+Selenium实现文件上传下载功能详解

    Java+Selenium实现文件上传下载功能详解

    这篇文章主要介绍了java代码如何利用selenium操作浏览器上传和下载文件功能,文中的示例代码讲解详细,具有一定的借鉴价值,需要的可以参考一下
    2023-01-01
  • 使用SpringBoot与Thrift实现RPC通信的方式详解

    使用SpringBoot与Thrift实现RPC通信的方式详解

    在微服务架构的世界里,服务间的通信机制选择成为了关键决策之一,RPC因其简洁、高效的特点备受青睐,本文将详细探讨如何利用Spring Boot和Thrift框架构建RPC通信,让读者理解其内在原理及实现方式,需要的朋友可以参考下
    2023-10-10
  • java对象转成byte数组的3种方法

    java对象转成byte数组的3种方法

    这篇文章主要为大家详细介绍了java对象转成byte数组的3种方法,具有一定的参考价值,感兴趣的朋友可以参考一下
    2018-06-06
  • Spring针对AOP详细讲解

    Spring针对AOP详细讲解

    Spring是一个广泛应用的框架,SpringAOP则是Spring提供的一个标准易用的aop框架,依托Spring的IOC容器,提供了极强的AOP扩展增强能力,对项目开发提供了极大地便利
    2022-06-06
  • Spring MVC 前端控制器 (DispatcherServlet)处理流程解析

    Spring MVC 前端控制器 (DispatcherServlet)处理流程解析

    DispatcherServlet是前置控制器,配置在web.xml文件中的,这篇文章主要介绍了Spring MVC 前端控制器 (DispatcherServlet)处理流程,需要的朋友可以参考下
    2022-05-05
  • JVM中-D、-X、-XX参数的区别

    JVM中-D、-X、-XX参数的区别

    本文主要介绍了JVM中-D、-X、-XX参数的区别,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-06-06
  • MyBatis传入List集合查询数据问题

    MyBatis传入List集合查询数据问题

    这篇文章主要介绍了MyBatis传入List集合查询数据问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-02-02
  • Spring Security 基于URL的权限判断源码解析

    Spring Security 基于URL的权限判断源码解析

    这篇文章主要介绍了Spring Security 基于URL的权限判断问题,我们想要实现自己的基于请求Url的授权只需自定义一个 AccessDecisionManager即可,接下来跟随小编一起看看实现代码吧
    2021-12-12
  • 解决SpringMVC接收不到ajaxPOST参数的问题

    解决SpringMVC接收不到ajaxPOST参数的问题

    今天小编就为大家分享一篇解决SpringMVC接收不到ajaxPOST参数的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-08-08
  • java清除html转义字符

    java清除html转义字符

    这篇文章主要介绍了一个静态文件处理的一些便捷服务,包括 java清除html转义字符,清除html代码,从style样式中读取CSS的属性,将字符串截取指定长度,涉及log4j,common-lang类的学习
    2014-01-01

最新评论