草庐IT

springBoot简介

Firm陈 2023-04-03 原文

认识一个东西我们先来试着回答三个经典的问题问题,是什么?为什么?怎么样?

一.springBoot是什么?
  在介绍 SpringBoot 之前我们首先来简单介绍一下 Spring。Spring 是诞生于2002年的 Java 开发框架,可以说已经成为 Java 开发的事实标准。所谓事实标准就是虽然 Java 官方没有说它就是开发标准,但是在当前 Java 开发的众多项目中,当我们谈到产品级的 Java 项目的时候,大多都是基于 Spring 或者应用了 Spring 特性的。

  Spring 基于 IOC 和 AOP 两个特性对 Java 开发本身进行了大大的简化。但是一个大型的项目需要集成很多其他组件,比如一个 WEB 项目,至少要集成 MVC 框架、Tomcat 这种 WEB 容器、日志框架、ORM框架,连接数据库要选择连接池吧……使用 Spring 的话每集成一个组件都要去先写它的配置文件,比较繁琐且容易出错。

  然后就有了SpringBoot。

  Spring Boot 是由 Pivotal 团队提供的全新框架,2014 年 4 月发布 Spring Boot 1.0 2018 年 3 月 Spring Boot 2.0发布。它是对spring的进一步封装,其设计目的是用来简化 Spring 应用的初始搭建以及开发过程。怎么简化的呢?就是通过封装、抽象、提供默认配置等方式让我们更容易使用。

  SpringBoot 基于 Spring 开发。SpringBoot 本身并不提供 Spring 框架的核心特性以及扩展功能,也就是说,它并不是用来替代 Spring 的解决方案,而是和 Spring 框架紧密结合用于提升 Spring 开发者体验的工具。

  关于 SpringBoot 有一句很出名的话就是约定大于配置。采用 Spring Boot 可以大大的简化开发模式,它集成了大量常用的第三方库配置,所有你想集成的常用框架,它都有对应的组件支持,例如 Redis、MongoDB、Jpa、kafka,Hakira 等等。SpringBoot 应用中这些第三方库几乎可以零配置地开箱即用,大部分的 SpringBoot 应用都只需要非常少量的配置代码,开发者能够更加专注于业务逻辑。

二.springBoot为什么出现?
为什么会产生 SpringBoot 呢?
  刚才说 SpringBoot 简化了基于 Spring 开发,这只是最直观的一方面,事实上 SpringBoot 的诞生有它所处的大时代背景这个原因在里面的,那就是微服务,这也是谈 SpringBoot 必谈微服务的原因。
  2014年一个叫 Martin Fowler (同时也是经典著作《重构:改善既有代码的设计》一书的作者)发表了一篇关于微服务的博客,比较形象生动地介绍了什么是微服务,然后微服务才慢慢被人所熟知。他说微服务其实是一种架构风格,我们在开发一个应用的时候这个应用应该是由一组小型服务组成,每个小型服务都运行在自己的进程内;小服务之间通过HTTP的方式进行互联互通。和微服务相对应的就是我们之前的,单体应用,就是大名鼎鼎的 all in one 的风格。这种风格把所有的东西都写在一个应用里面,比如我们熟悉的OA,CRM,ERP系统,所有的页面,所有的代码都放在一起,打成打成一个war包,然后把war包放在Tomcat容器中运行。

  这种传统web开发的架构模式当然也有它的优势,比如它测试部署比较简单,因为不涉及到多个服务的互联互调,只需要把一个包上传到服务器就行了,可以说是一人吃饱全家不饿。同样也不会给运维带来麻烦,方便水平扩展,只需要又把相同的应用复制多份放在不同的服务器中就达到了扩展的目的。

  单体应用的的缺点也显而易见,容易牵一发而动全身,比如要更改一个小小的功能,就可能需要重新部署整个应用。当然,更大的挑战就是日益增长的用户需求。

三.springBoot怎么样
  介绍了一大堆,那 SpringBoot 的开箱即用是怎么体现的呢。

  SpringBoot 官方推荐的构建应用的方式是使用 Spring Initializr,直接在网页上选择好构建工具、语言、SpringBoot 版本,填好自己的项目名和初始依赖,然后点Generate 按钮,就能下载一个构建好的工程的zip包,只需要把这个包解压之后导入IDE就可以了。

  这已经是一个包含依赖的、完整的、可独立运行的springboot应用了!你所需要做的就是往里面填充自己的业务代码!

  当然,如果能直接使用IDE来进行上述操作可以让这个过程变得更顺滑。如果你使用的是 IDEA 商业版的话,新建工程的时候直接有 Spring 的选项;如果是IDEA社区版的话,可以安装 Spring Assistant 这个插件可以实现同样的功能。它们的原理是帮你把连接 Spring Initializr 并下载解压这个过程自动化了,所以只需要保持网络畅通就行了。

  那如果要用原生的springMVC来实现这个事情就复杂了,可以看看右边我大概罗列的这些步骤,当时学的时候让我我非常头疼。要单独安装Tomcat,安装的过程中要注意版本和当前的spring版本是否兼容,手动引入spring各个模块的依赖。pom.xml就不说了,maven工程都要用到,然后还有web.xml-用来配置servlet、拦截规则、字符编码器等等,applicationContext.xml,springmvc.xml 等一大堆xml文件……

  这个过程对初学者非常不友好,记忆这些步骤和配置文件能让人崩溃,xml这种表达方式又不是很直观。这些东西称为脚手架,在小公司里面会搭建这些东西就可以算半个师傅了,小弟们就可以在搭好的架子里面写业务代码了。

  再聊回微服务,试想一下,如果我们要跟上时代的步伐,使用微服务去开发软件,每个功能模块都部署成一个单独的服务,这个时候我们再使用纯粹的 Spring 去开发,每开发一个服务都需要重复的搭建项目骨架,然后编写各种配置文件,几十几百个服务加起来,这部分工作量是很大的,这还不算业务代码的开发时间。这种时候就是 SpringBoot 发挥它开箱即用的特质的时候了。然后多个微服务之间再通过 Spring 全家桶里面的 SpringCloud 进行管理,比如服务注册、服务发现等等。所以我们现在说 SpringBoot 是 Java 企业级开发的一站式解决方案。

四.总结
  软件工程是一个不断抽象,不断把复杂的东西简化的这样一套理论和工具,不是是说使用起来越复杂就可以彰显我的高端和牛逼,有时候反而是做多错多。所以SpringBoot告诉我们这些工作都没必要,框架来做就行了,你们可以专注于代码逻辑。

SpringBoot 具有如下优点

(1)快速创建独立运行的Spring项目以及与主流框架集成、
(2)使用嵌入式的Servlet容器,应用无需打成WAR包
(3)Starters自动依赖与版本控制
(4)大量的自动配置,简化开发,也可修改默认值
(5)无需配置XML,无代码生成,开箱即用
(6)准生产环境的运行时应用监控
(7)与云计算的天然集成

有关springBoot简介的更多相关文章

  1. HBase Region 简介和建议数量&大小 - 2

    Region是HBase数据管理的基本单位,region有一点像关系型数据的分区。region中存储这用户的真实数据,而为了管理这些数据,HBase使用了RegionSever来管理region。Region的结构hbaseregion的大小设置默认情况下,每个Table起初只有一个Region,随着数据的不断写入,Region会自动进行拆分。刚拆分时,两个子Region都位于当前的RegionServer,但处于负载均衡的考虑,HMaster有可能会将某个Region转移给其他的RegionServer。RegionSplit时机:当1个region中的某个Store下所有StoreFile

  2. IDEA 2023.1 正式发布,新特性简介 - 2

     昨晚看到IDEA官推宣布IntelliJIDEA2023.1正式发布了。简单看了一下,发现这次的新版本包含了许多改进,进一步优化了用户体验,提高了便捷性。至于是否升级最新版本完全是个人意愿,如果觉得新版本没有让自己感兴趣的改进,完全就不用升级,影响不大。软件的版本迭代非常正常,正确看待即可,不持续改进就会慢慢被淘汰!根据官方介绍:IntelliJIDEA2023.1针对新的用户界面进行了大量重构,这些改进都是基于收到的宝贵反馈而实现的。官方还实施了性能增强措施,使得Maven导入更快,并且在打开项目时IDE功能更早地可用。由于后台提交检查,新版本提供了简化的提交流程。IntelliJIDEA

  3. springboot定时任务 - 2

    如果您希望在Spring中启用定时任务功能,则需要在主类上添加 @EnableScheduling 注解。这样Spring才会扫描 @Scheduled 注解并执行定时任务。在大多数情况下,只需要在主类上添加 @EnableScheduling 注解即可,不需要在Service层或其他类中再次添加。以下是一个示例,演示如何在SpringBoot中启用定时任务功能:@SpringBootApplication@EnableSchedulingpublicclassApplication{publicstaticvoidmain(String[]args){SpringApplication.ru

  4. 基于SpringBoot的线上日志阅读器 - 2

    软件特点部署后能通过浏览器查看线上日志。支持Linux、Windows服务器。采用随机读取的方式,支持大文件的读取。支持实时打印新增的日志(类终端)。支持日志搜索。使用手册基本页面配置路径配置日志所在的目录,配置后按回车键生效,下拉框选择日志名称。选择日志后点击生效,即可加载日志。windows路径E:\java\project\log-view\logslinux路径/usr/local/XX历史模式历史模式下,不会读取新增的日志。针对历史文件可以分页读取,配置分页大小、跳转。历史模式下,支持根据关键词搜索。目前搜索引擎使用的是jdk自带类库,搜索速度相对较低,优点是比较简单。2G日志全文搜

  5. springboot使用validator进行参数校验 - 2

    1.依赖导入org.springframework.bootspring-boot-starter-weborg.springframework.bootspring-boot-starter-validation2.validation常用注解@Null被注释的元素必须为null@NotNull被注释的元素不能为null,可以为空字符串@AssertTrue被注释的元素必须为true@AssertFalse被注释的元素必须为false@Min(value)被注释的元素必须是一个数字,其值必须大于等于指定的最小值@Max(value)被注释的元素必须是一个数字,其值必须小于等于指定的最大值@D

  6. pytest简介 - 2

    介绍pytest是一个非常成熟的全功能的Python测试框架,主要有以下几个特点:简单灵活,容易上手支持参数化能够支持简单的单元测试和复杂的功能测试,还可以用来做selenium/appnium等自动化测试、接口自动化测试(pytest+requests)pytest具有很多第三方插件,并且可以自定义扩展,比较好用的如pytest-selenium(集成selenium)、pytest-html(完美html测试报告生成)、pytest-rerunfailures(失败case重复执行)、pytest-xdist(多CPU分发)等测试用例的skip和xfail处理可以很好的和jenkins集成

  7. 停车系统源码-基于springboot+uniapp开源项目 - 2

    Iparking停车收费管理系统-可商用介绍Iparking是一款基于springBoot的停车收费管理系统,支持封闭车场和路边车场,支持微信支付宝多种支付渠道,支持多种硬件,涵盖了停车场管理系统的所有基础功能。技术栈Springboot,MybatisPlus,Beetl,Mysql,Redis,RabbitMQ,UniApp功能云端功能序号模块功能描述1系统管理菜单管理配置系统菜单2系统管理组织管理管理组织机构3系统管理角色管理配置系统角色,包含数据权限和功能权限配置4系统管理用户管理管理后台用户5系统管理租户管理多租户管理6系统管理公众号配置租户公众号配置7系统管理操作日志审计日志8系统

  8. SpringCloud入门实战(七)-Hystrix入门简介 - 2

    📝学技术、更要掌握学习的方法,一起学习,让进步发生👩🏻作者:一只IT攻城狮。💐学习建议:1、养成习惯,学习java的任何一个技术,都可以先去官网先看看,更准确、更专业。💐学习建议:2、然后记住每个技术最关键的特性(通常一句话或者几个字),从主线入手,由浅入深学习。❤️《SpringCloud入门实战系列》解锁SpringCloud主流组件入门应用及关键特性。带你了解SpringCloud主流组件,是如何一战解决微服务诸多难题的。项目demo:源码地址👉🏻SpringCloud入门实战系列不迷路👈🏻:SpringCloud入门实战(一)什么是SpringCloud?SpringCloud入门实战

  9. 优化大数据量查询方案——SpringBoot(Cloud)整合ES - 2

    一、Elasticsearch简介实际业务场景中,多端的查询功能都有很大的优化空间。常见的处理方式有:建索引、建物化视图简化查询逻辑、DB层之上建立缓存、分页…然而随着业务数据量的不断增多,总有那么一张表或一个业务,是无法通过常规的处理方式来缩短查询时间的。在查询功能优化上,作为开发人员应该站在公司的角度,本着优化客户体验的目的去寻找解决方案。本人有幸做过Tomcat整合solr,今天一起研究一下当前比较火热的Elasticsearch搜索引擎。Elasticsearch是一个非常强大的搜索引擎。它目前被广泛地使用于各个IT公司。Elasticsearch是由Elastic公司创建。它的代码位

  10. 最新2023年Kali Purple,紫色的带防御kali,简介和安装(超详细) - 2

    文章目录一,什么是kaliPurle(卡利紫)二,如何安装kaliPurple。(有步骤没图片直接是默认)1,复制它的下载链接到迅雷可以让你下镜像变得更快。2,打开你的虚拟机创建新的虚拟机3,点击后面浏览然后找到镜像的所在地选中确定,下一步4,这里默认就可以,因为Ubuntu和这个差不多架构。5,然后,名字自己改一下,然后把他安到你想要装的盘,容量默认。之后一直下一步就可以**6,打开它,然后第一个图形界面安装,直接回车,然后选中文点continue之后没有图片的直接点继续。7,密码想设什么设什么。然后一直继续到我的图片那里改一下就可以了。8,软件默认就行。9,耐心等待。然后点手动配置dvc然

随机推荐