为什么SpringBoot如此受欢迎?如何有效地学习SpringBoot?

SpringBoot是最流行和使用最广泛的Java框架。 有时,这种讨论“为什么SpringBoot如此受欢迎?” 来我和我的朋友/同事之间。 另外,我确实收到了许多人发来的电子邮件,询问“春天是巨大的,如何快速学习它?” 。 在这篇文章中,我将尝试回答这两个问题。

为什么SpringBoot如此受欢迎?

Spring和SpringBoot受欢迎的原因可能有很多,但我认为以下是主要原因:

1.大幅提高开发人员的生产力

SpringBoot强大的自动配置机制使基于Spring的应用程序入门非常容易。 更重要的是,SpringBoot提供了各种启动器,对于许多应用程序来说已经足够了。

您只需创建一个项目,选择Web,Spring Data JPA / Mongo等,H2 / EmbeddedMongo,Spring Data REST启动器,然后创建域实体和存储库,即可创建由数据库支持的REST API。 就这样,您就拥有了一个功能齐全的REST API。

这降低了新手的入门门槛,对于那些熟悉如何手动配置所有这些并且可能已经完成100遍并且厌倦了编写此样板的人来说,SpringBoot是一件礼物。

2.简化的高层抽象

Spring和SpringBoot的主要目标之一就是使事情变得容易。 Spring产品组合具有自己强大的Web MVC框架,Spring Security框架,但是其其他大多数项目都是为了提供更高级别的抽象,以使使用它们更加容易。

例如,Spring Data JPA通过提供API来执行CRUD操作,排序,分页,从而使JPA的使用变得非常容易,而无需自己实现所有这些。

Spring AMQP或Spring for Kafka提供了更高级别的抽象,因此您可以轻松使用RabbitMQ或Kafka,而无需编写低级的样板代码。

3.微服务和云原生友好

微服务架构是当前最新的热门趋势,许多组织更喜欢微服务架构,并希望将其部署在AWS,CloudFoundry等云环境中。

通常,SpringBoot应用程序是作为独立的部署单元(FAT Jar)构建的,使用其Profiles概念,我们可以在多个环境中部署相同的应用程序而无需更改任何代码。 除此以外,SpringCloud模块还提供了构建Cloud Native微服务所需的大量功能。

4.满足现代业务需求

现代应用程序需求已发生变化,并且瞬息万变。 我们等不及3到4年的发布周期才能获得新功能。 我们需要具有快速发布周期的框架来支持这些业务需求。

Spring的核心只是一个依赖注入(DI)容器。 但是Spring的力量来自其丰富的投资组合项目。 您想要使用NoSQL数据库,想要一个健壮的安全框架,想要与Social平台集成,想要与Big Data框架一起使用,想要使用像Kafka这样的Streaming平台……涵盖了所有内容。

5. Spring开发者社区

这是Spring框架的最佳组成部分。 您可以在Spring框架上找到100万个博客,其中包含许多精彩的博客文章。 您几乎可以在StackOverflow上找到解决每个问题的解决方案。 您可以通过Twitter轻松地联系Spring Developer团队。

Spring和SpringBoot面临的挑战

当我与某些人(初级和有经验的开发人员)交谈时,他们常说的一句话是“春天是巨大而复杂的”。 但是我对此有完全相反的意见。 在与他们更多地谈论了他们为什么认为Spring如此复杂之后,我理解了他们为何如此。 这也是我感到学习JavaScript框架很复杂的原因。

时不时地,我很想学习NodeJS和一个闪亮的新JavaScript框架,例如ReactJS或VueJS等。 ReactJS等。花了4到6个小时,并且知道有36,794种方法可以用JavaScript进行任何操作,但我迷失了这片JavaScript工具和选项。 然后我觉得JavaScript很复杂。

我应该做的是停止追逐所有框架/工具并首先学习准系统JS或ES6,选择一个框架(例如ReactJS)和一个构建工具(如WebPack),然后学习如何正确地一起使用它们。

除了对Spring的感觉是巨大而复杂的,我还看到人们说SpringBoot复杂的以下原因:

  1. 人们无需具备任何Spring知识即可直接跳到SpringBoot ,一切看起来都很神奇。 只要使用默认值,它就可以很好地工作,并且您需要自定义它。
  2. 选择太多。 当您在某个与Spring相关的问题上寻求帮助时,您总是会找到100种解决方案来解决,这使您难以选择。
  3. 恕我直言, 某些Spring模块很复杂。 有时候,我不得不更深入地研究Spring Security源代码,我觉得它非常复杂,因为它具有适用于几乎所有内容的自定义钩子。

如何有效地学习Spring和SpringBoot?

我将为您提供一些学习Spring和SpringBoot的技巧,基本上就是我在学习它们时所遵循的技巧。

1.反复学习

我认为没人能一口气学习框架的所有知识。 我遵循一种迭代方法。

迭代1:遵循一些快速入门指南,并创建一个具有所有依赖项的项目,并构建一个Todo应用程序(Todo是新的HellowWorld权利:-)。 成功运行示例应用程序时,它会给您信心。

迭代2:阅读官方文档
了解此特定框架要解决的问题以及该框架在什么情况下合适以及在何处不是一个很好的选择,这一点非常重要。 在这方面,Spring框架文档很棒而且太长(超过800页):-)。

迭代3:构建中等复杂的应用程序

迭代4:深入研究框架的源代码,并了解如何自定义框架

2.首先,学习Spring Core框架

如果您不了解Spring,请不要跳到SpringBoot上。 我强烈建议您首先学习没有SpringBoot的Spring框架,以便您了解SpringBoot在幕后的作用。

熟悉Spring DI概念,范围,注释,生命周期回调,Bean配置样式(注释,@ Beans等)。 了解Spring如何使用Template模式(JdbcTemplate,JmsTemplate等)来避免编写样板代码。

3.了解SpringBoot自动配置的工作方式

SpringBoot的强大功能来自其自动配置机制,这并不是魔术。 学习Spring的@Conditional功能并探索一些SpringBoot的AutoConfiguration类,例如DataSourceAutoConfiguration,JpaAutoConfiguration等,您可以轻松地了解SpringBoot如何根据某些条件自动创建bean。

您可以阅读有关SpringBoot AutoConfiguration魔术如何工作的博客文章 此处https://sivalabs.in/2016/03/how-springboot-autoconfiguration-magic/

4.关注社区并阅读博客

这是Spring框架的最佳组成部分,是一个庞大的社区,并且有成千上万的关于Spring的博客。 查找这些令人敬畏的Spring博客的一种简单方法是, 每周二的Josh Long( @starbuxman )发表于Spring Blog的本周系列文章中。

5.练习,练习和练习

没有什么可以取代“实践”。 无论您阅读多少,在YouTube上观看了多少Spring视频。最好的学习方法是使用它。

这些天,我几乎看不到Java项目不使用Spring和SpringBoot。 您可以在从事该项目的同时学习,但是我强烈建议创建一个Pet项目并使用各种Spring组合项目来实施。

毕竟,学习仍然需要一些时间。 花一些时间来掌握它。 耐心一点。 如果遇到困难,请与他人联系。 阅读书籍和博客。 练习,练习和练习。

我希望它会有所帮助,并在您喜欢的情况下分享!

翻译自: https://www.javacodegeeks.com/2018/02/springboot-popular-learn-springboot-effectively.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/333614.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

树莓派python交互界面实例_玩转树莓派-RaspBerry,使用Python开发定制界面

1 准备SD卡8G以上,16G更佳。编译过程中,会耗用大量存储空间。一定在编译之前运行sudo raspi-config,选择expand file system扩展SD卡的分区。如果空间不够,会导致运行挂起。使用df -h可查看存储卡的可用容量。2 更新资源的索引清单…

什么是无理数

无理数”就是不能精确表示为两个整数之比的数,而并非没有道理。 无理数,也称为无限不循环小数,不能写作两整数之比。若将它写成小数形式,小数点之后的数字有无限多个,并且不会循环。 常见的无理数有非完全平方数的平方…

java依赖_java 依赖、组合、聚合与继承

java中类与类之间的关系大部分的初学者只知道java中两个类之间可以是继承与被继承的关系,可是事实上,类之间的关系大体上存在五种—继承(实现)、依赖、关联、聚合、组合。接下来,简单的分析一下这些关系。继承(实现)对于类来说,这…

获取 RPM 包常用站点

获取需要的 RPM 包常用站点: http://mirrors.sohu.com http://rpmfind.net http://rpm.pbone.net/

java 多线程和并行编程_Java 8中的并行和异步编程

java 多线程和并行编程并行代码是在多个线程上运行的代码,曾经是许多经验丰富的开发人员的噩梦,但是Java 8带来了许多更改,这些更改应该使这种提高性能的窍门更加易于管理。 并行流 在Java 8之前,并行(或并发&#xf…

java bi报表工具_7款顶级开源BI(商务智能)软件和报表工具

在这个信息化时代,每分每秒都产生海量数据。在海量数据中,挖掘出有用的数据,并且能以较人性化、直观的方式展示这些数据,变得尤为重要。本文将介绍 7款顶级开源 BI(商务智能)软件和报表工具,用于商业数据的分析处理&am…

Linux命令之 DNF -- 新一代的 RPM 软件包管理器

文章目录一、命令介绍二、安装 DNF三、DNF 命令(一)主要命令1. 安装、升级和删除软件包2. 查询和检查软件包3. 执行其它功能(二)插件命令四、选项参数五、命令示例(一)安装、升级和删除软件包安装软件包安装…

抽取大小: 高斯sigma_无服务器:SLAppForge Sigma入门

抽取大小: 高斯sigma! Cmere。 寻找某事? 无服务器,是吗? 在上面。 进入海峡,在“ Sigma”标志处右转。 (嗯,还不要怪我们;至少我们认为这很容易!) 我们…

java多线程 修改优先级_Java多线程-线程的调度(优先级)

与线程休眠类似,线程的优先级仍然无法保障线程的执行次序。只不过,优先级高的线程获取CPU资源的概率较大,优先级低的并非没机会执行。线程的优先级用1-10之间的整数表示,数值越大优先级越高,默认的优先级为5。在一个线…

Linux 命令之 apt-mark -- 对 APT 软件包设置标记

文章目录一、命令介绍二、常用命令三、命令示例(一)将软件包标记为 unhold一、命令介绍 apt-mark 可以对软件包设置标记,列出或过滤拥有某个标记的软件包。 二、常用命令 命令说明auto标记指定软件包为自动安装manual标记指定软件包为手动…

java魔兽猎人_Java基于Swing实现的打猎射击游戏代码

package Game;import static java.lang.Math.random;import java.awt.*;import java.awt.event.*;import javax.swing.*;public class MainFrame extends JFrame {private static final long serialVersionUID 1L;private static long score 0;// 分数private static Integer…

Linux 命令之 aptitude -- APT 软件包管理工具

文章目录一、命令介绍二、常用选项三、命令示例(一)安装、升级和删除软件包升级系统所有的软件包将系统升级到新的发行版安全升级系统的软件包安装软件包删除软件包(保留有关的配置文件)彻底删除软件包(删除有关的配置…

微软 azure_在Microsoft Azure上运行Eclipse MicroProfile

微软 azure在本文中,我将通过展示如何在Microsoft Azure Web Apps for Containers中执行操作来跟踪有关在Oracle Cloud中运行Eclipse MicroProfile应用程序的系列文章。 我正在使用与以前的帖子相同的简单应用程序CloudEE Duke 。 唯一的区别是,我现在将…

java文件复制速度_【Java】Java代码拷贝文件的速度

Java代码拷贝文件的速度究竟有多快?前言最近学习Java到了流处理,其中有种流叫FileInputStream和FileOutputStream,简单来说,就是操作文件的,老师给我们示范了一个非常有趣的例子,用代码拷贝文件&#xff01…

vim 的配置详解/键盘映射配置详解

文章目录特性设置配置快捷键(键映射配置)键盘符号键盘映射命令和不同模式的对应关系取消键盘映射查看键盘映射在目录 /etc/ 下面,有个名为 vimrc 的文件,这是系统中公共的 vim 配置文件,对所有用户都有效。而在每个…

开闭原则 依赖倒置原则_坚实原则:依赖倒置原则

开闭原则 依赖倒置原则到目前为止,我们只研究了单一职责 , 打开/关闭 , liskov替换和接口隔离原则。 依赖倒置是我们所要研究的最后一个原理之一。 该原则指出 答:高级模块不应依赖于低级模块。 两者都应依赖抽象。 B.抽象不应…

java的传值调用什么_Java的传值调用

(本文非引战或diss,只是说出自己的理解,欢迎摆正心态观看或探讨)引子之所以写这篇文章是因为前些天写了一篇《Java中真的只有值传递么?》探讨了网上关于Java只有值传递的说法,当时写这篇文章的缘由是因为之前看的文章讲解的Java只…

Linux 命令之 apt -- Debian Linux 新一代的软件包管理工具

文章目录 一、命令介绍二、常用命令三、常用选项四、命令示例(一)安装、更新和删除软件包安装指定的软件包安装软件包的同时修复依赖问题安装指定版本的软件包安装本地的 deb 包文件删除软件包,保留配置文件删除软件包,不保留配置文件将已经安装的但是不再使用的软件包删除…

liskov替换原则_坚实原则:Liskov替代原则

liskov替换原则以前,我们深入研究了坚实的原则,包括单一责任和开放/封闭原则。 Liskov替代原则(LSP)是子类型关系的一种特殊定义,称为(强)行为子类型, 假设对象S是对象T的子类型&a…

java 聚合_Java聚合

聚合如果一个类有一个类的实体引用(类中的类),则它称为聚合。 聚合表示HAS-A关系。考虑有一种情况,Employee对象包含许多信息,例如:id,name,emailId等。它包含另一个类对象:address,…