为什么java架构师都会使用spring boot,是因为它有什么优势吗
使用SpringBoot开发项目,会给我们带来非常美妙的开发体验,可以从以下几个方面展开来说明
SpringBoot让开发变得更简单
SpringBoot对开发效率的提升是全方位的,我们可以简单做一下对比:
在没有使用SpringBoot之前我们开发一个web项目需要做哪些工作:
1)配置web.xml,加载Spring和Springmvc
2)配置数据库连接、配置Spring事务
3)配置加载配置文件的读取,开启注解
4)配置日志文件
…
n)配置完成之后部署tomcat调试
可能你还需要考虑各个版本的兼容性,jar包冲突的各种可行性。
那么使用SpringBoot之后我们需要开发一个web项目需要哪些操作呢?
1)登录网址http://start.spring.io/选择对应的组件直接下载
2)导入项目,直接开发
上面的N步和下面的2步形成巨大的反差,这仅仅只是在开发环境搭建的这个方面。
SpringBoot使测试变得更简单
SpringBoot对测试的支持不可谓不强大,SpringBoot内置了7种强大的测试框架:
JUnit:一个Java语言的单元测试框架
SpringTest&SpringBootTest:为SpringBoot应用提供集成测试和工具支持
AssertJ:支持流式断言的Java测试框架
Hamcrest:一个匹配器库
Mockito:一个javamock框架
JSONassert:一个针对JSON的断言库
JsonPath:JSONXPath库
我们只需要在项目中引入spring-boot-start-test依赖包,就可以对数据库、Mock、Web等各种情况进行测试。
SpringBootTest中包含了我们需要使用的各种测试场景,满足我们日常项目的测试需求。
SpringBoot让配置变得更简单
SpringBoot让配置变简单,说到这里我们就需要了解一下SpringBoot的核心思想:约定优于配置。那么什么是约定优于配置呢?
约定优于配置(conventionoverconfiguration),也称为约定编程,是一种软件设计范例,旨在减少软件开发人员需要做出的决策数量,并在不损失灵活性的情况下获得简单的收益。
本质是开发人员只需要指定应用程序中的不合格部分。例如,如果模型中有一个名为User的类,则默认情况下数据库中的对应表将命名为user。仅当偏离该约定(例如,将表命名为“user_info”)时,才需要编写有关该名称的配置。
SpringBoot让部署变得更简单
说到SpringBoot使部署变得更容易,我们不得不说SpringBoot内嵌容器。内嵌容器不仅使部署更容易,而且在开发和调试阶段带来了极大的便利。与过去开发Web项目时Tomcat繁琐的配置相比,它使您可以使用SpringBoot内嵌容器开发来获得更深的感受。使用SpringBoot开发Web项目使我们可以专注于编写业务代码,而不必担心容器的环境。
Jenkins当前是连续建筑领域中使用最广泛的工具之一。Jenkins是一个独立的开源自动化服务器,可用于自动化各种任务,例如构建,测试和部署软件。Jenkins可以通过本机系统软件包Docker安装,甚至可以在安装JavaRuntimeEnvironment的任何计算机上独立运行。
坦率地说,Jenkins专门负责如何将代码转换为可执行程序包,将其部署到目标服务器以及监视其运行状态(日志)。自动化,性能,打包,部署,发布,发布结果的自动验证,界面测试,单元测试等,Jenkins可以支持我们打包测试部署的各个方面。
使用Jenkins部署SpringBoot项目非常简单。如果您想继续理解,可以参考我的文章:使用Jenkins部署SpringBoot,您只需要在早期进行一些简单的配置。当我们需要发布项目时,我们只需要单击与项目相对应的发布按钮。可以将项目从版本库中拉出,打包并发布到目标服务器,这大大简化了以后的操作和维护部署。
虚拟化技术的发展给我们带来了更多的可能性,我们可以利用容器化技术,将SpringBoot项目做成镜像,根据容器集群的策略来实现弹性扩容、动态部署等。所以SpringBoot+Docker+Jenkins会将SpringBoot项目的部署做得更简单化、智能化。
SpringBoot让监控变得更简单
可以说SpringBoot就是一款自带监控的开源软件,在设计之初就考虑到应用的监控问题,专门提供了一款监控组件来完成这个工作,这个组件就是
SpringBootActuator。
SpringBootActuator是SpringBoot提供的对应用系统监控的集成功能,可以查看应用配置的详细信息,例如自动化配置信息、创建的Springbeans以及一些环境属性等。
当然SpringBootActuator虽然可以监控一个SpringBoot应用的健康情况,实际上现在的系统都是需要很多的服务相互配合来完成工作,如何通过一个监控软件来监控所以的SpringBoot项目将变得比较紧迫。
在开源界也有人意识到了这个问题,并且基于Springbootactuator做出了一款强大的监控软件,这个软件就是SpringBootadmin。
SpringBootAdmin是一个管理和监控SpringBoot应用程序的开源软件。每个应用都认为是一个客户端,通过HTTP或者使用Eureka注册到adminserver中进行展示,SpringBootAdminUI部分使用AngularJs将数据展示在前端。
SpringBootAdmin是一个针对spring-boot的actuator接口进行UI美化封装的监控工具。他可以:在列表中浏览所有被监控spring-boot项目的基本信息,详细的Health信息、内存信息、JVM信息、垃圾回收信息、各种配置信息(比如数据源、缓存列表和命中率)等,还可以直接修改logger的level。
使用SpringBootAdmin不仅可以监控SpringBoot项目,还可以监控SpringCloud项目,因此使用了SpringBoot项目之后我们监控SpringBoot集群效果如下:
简单、直观、易用是它的特点,针对一些特殊情况还可以提供报警服务。所以说使用SpringBootActuator解决了单个SpringBoot的监控问题,使用SpringBootAdmin就是解决了整个集群监控的问题。
推荐阅读:java架构师指南:Spring Boot的介绍